Age | Commit message (Collapse) | Author | Files | Lines |
|
This pass will implement the specialized lowering of object accessors to
Guile's VM primitives.
* am/bootstrap.am (SOURCES): Add new file.
* module/language/cps/lower-primcalls.scm: New file.
|
|
* module/system/base/target.scm (target-max-size-t/scm): Use floor/
instead of /.
|
|
* module/language/cps/utils.scm (compute-var-representations): For the
wasm target, these values are (ref $kvarargs), not i64. Will need to
distinguish from bytevector pointers at some point, though.
|
|
* module/language/cps/compile-bytecode.scm (compile-function):
The rsh/lsh patterns would never match. I think these would end up
dispatching through emit-text though.
|
|
This prevents eager conversion to alists.
|
|
This macro expands to field accessors, which in the case of tree-il-src
will force an eager conversion of the source info to alists.
|
|
Reported by Mike Gran.
* gc-benchmarks/local.mk (EXTRA_DIST): Change = to +=.
|
|
* libguile/exceptions.c (exception_epoch_fluid): Rename from
active_exception_handlers_fluid.
(scm_dynwind_throw_handler): Increment exception epoch instead of
resetting active exception handlers.
(scm_init_exceptions): Update.
* module/ice-9/boot-9.scm (with-exception-handler): Rework to associate
an "epoch" fluid with each exception handler.
(with-throw-handler): Establish a new epoch, during the execution of a
throw handler.
(raise-exception): Rework to avoid capturing a list of exception
handlers, and to use epochs as a way to know which handlers have already
been examined and which are on the dispatch stack.
* test-suite/tests/exceptions.test ("throwing within exception
handlers"): New test.
|
|
* module/ice-9/lineio.scm: Deprecate.
|
|
* libguile/r6rs-ports.c: Do the usual dance to load
make-custom-binary-input-port et al just once.
|
|
* module/ice-9/pretty-print.scm (call-with-truncating-output-string):
Actually detect newlines.
|
|
* module/ice-9/pretty-print.scm (truncated-print): Use new
call-with-truncating-output-string, to allow for early bailout when
printing large records.
|
|
* module/ice-9/pretty-print.scm (pretty-print): Inline generic-write
into its only caller.
|
|
* module/ice-9/pretty-print.scm (generic-write): width is never false.
|
|
* module/ice-9/pretty-print.scm (call-with-truncating-output-string):
New function.
* module/ice-9/pretty-print.scm (generic-write): Rewrite so that instead
of keeping track of the column, we just use port-column on the port.
Also, when checking if a possibly-improper list can print on one line,
use new call-with-truncating-output-string so as to always abort early,
even for long bytevectors.
|
|
* doc/ref/api-io.texi (Soft Ports): Update docs.
* module/ice-9/boot-9.scm (make-soft-port): Don't eagerly load soft
ports.
* module/ice-9/soft-ports.scm (deprecated-make-soft-port): Rename from
make-soft-port.
(make-soft-port): New interface.
|
|
* module/ice-9/textual-ports.scm (custom-textual-port-read+flush-input):
(custom-textual-port-write):
(custom-textual-port-seek):
(custom-textual-port-close):
(custom-textual-port-random-access?):
(make-custom-textual-input-port):
(make-custom-textual-output-port):
(make-custom-textual-input/output-port): New procedures.
* doc/ref/api-io.texi (Ports): Update docs.
* doc/ref/r6rs.texi (rnrs io ports): Mention custom textual port
interfaces.
* module/rnrs/io/ports.scm: Re-export custom textual port interfaces
from (ice-9 textual-ports).
* test-suite/tests/r6rs-ports.test: Add minimal tests for textual ports.
|
|
This also makes soft ports suspendable.
* am/bootstrap.am (SOURCES): Add (ice-9 soft-ports).
* libguile/init.c (scm_i_init_guile): No need to init vports.
* libguile/vports.c: Call out to (ice-9 soft-ports).
* libguile/vports.h: Remove internal scm_init_vports.
* module/ice-9/boot-9.scm (the-scm-module): Import (ice-9 soft-ports).
Really this enlarges the boot closure a bit, so we should probably
refactor.
* module/ice-9/soft-ports.scm: New file.
|
|
* module/web/http.scm (make-chunked-output-port): Use custom binary
output ports.
|
|
* libguile/r6rs-ports.c: Call out to Scheme instead of defining here.
* libguile/r6rs-ports.h: Put custom binary port decls together, to
deprecate later.
* module/ice-9/binary-ports.scm: Re-implement custom binary ports in
terms of custom ports.
|
|
Custom ports are a kind of port that exposes the C port type interface
directly to Scheme. In this way the full capability of C is available
to Scheme, and also the read and write functions can be tail-called from
Scheme (via port-read / port-write).
* libguile/custom-ports.c:
* libguile/custom-ports.h:
* module/ice-9/custom-ports.scm: New files.
* libguile/init.c:
* libguile/Makefile.am:
* am/bootstrap.am: Add to the build.
* doc/ref/api-io.texi: Update the manual.
|
|
* libguile/bytevectors.c (scm_bytevector_slice): Return the bytevector
directly if start==0 and count==len.
|
|
* module/ice-9/pretty-print.scm (generic-write): Not really sure why
read macros are duplicated, but this is a refactor to use more match and
less cadr.
|
|
* module/ice-9/pretty-print.scm (genwrite:newline-str): Remove.
(generic-write): Just use "\n".
|
|
* module/ice-9/pretty-print.scm (generic-write): Use
string-concatenate-reverse instead of locally-defined
reverse-string-append.
(reverse-string-append): Remove.
|
|
* .guix/modules/guile-package.scm: Add missing module import.
|
|
* Makefile.am (SUBDIRS): Remove 'am'.
(EXTRA_DIST): Add files from am/.
* am/Makefile.am: Remove.
* configure.ac: Don't emit 'am/Makefile'.
|
|
* gc-benchmarks/Makefile.am: Rename to...
* gc-benchmarks/local.mk: ... this. Prefix file names with %D%.
(benchmarks): Rename to...
(gc_benchmarks): ... this.
* Makefile.am: Include it.
* configure.ac: Don't output 'gc-benchmarks/Makefile'.
|
|
This is a followup to 178e9d237b6522ba8f72162949d9b925f6750266.
* emacs/Makefile.am: Delete.
* configure.ac: Don't output 'emacs/Makefile'.
* Makefile.am (SUBDIRS): Remove 'emacs'.
|
|
* build-aux/guix: Rename to...
* .guix/modules: ... this.
* .guix-channel: Adjust accordingly.
* guix.scm: Likewise.
* build-aux/manifest.scm: Rename to...
* .guix/manifest.scm: ... this.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
|
|
This avoids ambiguity when using channels in addition to 'guix'.
* build-aux/guix/guile-package.scm (guile): Refer to packages by their
bindings rather than using 'specification->package'.
|
|
In Guile 3.0.9, 'system*' would no longer open /dev/null for file
descriptors 0, 1, and 2 when its 'current-input-port',
'current-output-port', or 'current-output-port' is not bound to a file
port. This patch reinstates that behavior.
Fixes <https://bugs.gnu.org/63024>.
* libguile/posix.c (piped_process): Open /dev/null to use as in/out/err
if the corresponding port is not backed by a file descriptor.
* test-suite/tests/posix.test ("system*")["https://bugs.gnu.org/63024"]:
New test.
* NEWS: Update.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
|
|
* libguile/posix.c (do_spawn): Add error handling if
posix_spawn_file_actions_adddup2 fails.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
Fixes https://debbugs.gnu.org/63279. The issue was that if the producer
thunk caused a backtrace, pretty-printing the call-with-values frame
would segfault because there was an unininitialized slot on the stack.
For functions produced by the compiler this wouldn't be a problem
because there are stack maps, but primitives require that all slots on a
pending stack frame be packed (no uninitialized values) and tagged (all
SCM values, no unboxed values).
* test-suite/tests/error-handling.test: New test.
* test-suite/Makefile.am: Add new file.
* libguile/vm.c (define_vm_builtins): Fix call-with-values to have a
more compact stack.
|
|
* libguile/gsubr.c (scm_apply_subr): Reference the limit.
(get_subr_stub_code): As stated.
* libguile/jit.c (compile_subr_call): As stated.
|
|
Fixes <https://bugs.gnu.org/62456>.
Signed-off-by: Mikael Djurfeldt <mikael@djurfeldt.com>
|
|
|
|
Fixes <https://bugs.gnu.org/62501>.
* test-suite/tests/posix.test ("spawn")["env with #:environment
and #:output"]: Add workaround for GNU/Hurd.
* NEWS: Update.
|
|
* configure.ac: Check for 'posix_spawn_file_actions_addclosefrom_np'.
* libguile/posix.c (HAVE_ADDCLOSEFROM): New macro.
(close_inherited_fds): Wrap in #ifdef HAVE_ADDCLOSEFROM.
(do_spawn) [HAVE_ADDCLOSEFROM]: Use 'posix_spawn_file_actions_addclosefrom_np'.
|
|
This reverts 9332b632407894c2e1951cce1bc678f19e1fa8e4, thereby
reinstating the performance issue in <https://bugs.gnu.org/59321>.
This optimization was subject to race conditions in multi-threaded code:
new file descriptors could pop up at any time and thus leak in the
child.
* libguile/posix.c (close_inherited_fds): Remove.
(close_inherited_fds_slow): Rename to...
(close_inherited_fds): ... this.
|
|
Fixes <https://bugs.gnu.org/61095>.
Reported by Omar Polo <op@omarpolo.com>.
* libguile/posix.c (close_inherited_fds_slow): On systems other than
GNU/Linux, call 'addclose' only when 'fcntl' succeeds on MAX_FD.
* NEWS: Update.
|
|
|
|
Fixes <https://bugs.gnu.org/62290>.
Based on the implementation in ports.c. I don't understand what this
code is really doing, but the suspendable ports implementation differs
from the similar C code for a couple of inequalities.
* module/ice-9/suspendable-ports.scm (decode-utf8, bad-utf8-len): Flip a
couple of inequalities.
* test-suite/tests/ports.test ("string ports"): Add additional invalid
UTF-8 test case.
* NEWS: Update.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
Noticed while investigating a migration to utf-8 strings. After making
changes that routed non-ascii symbol hashing through this function,
encoding-iso88597.test began intermittently failing because it would
traverse trailing garbage when u8_strnlen reported 8 chars instead of 4.
Change the scm_i_str2symbol and scm_i_str2uninterned_symbol internal
hash type to unsigned long to explicitly match the scm_i_string_hash
result type.
* libguile/hash.c (scm_i_utf8_string_hash): Call u8_mbsnlen not u8_strnlen.
* libguile/symbols.c (scm_i_str2symbol, scm_i_str2uninterned_symbol):
Use unsigned long for scm_i_string_hash result.
* test-suite/standalone/.gitignore: Add test-hashing.
* test-suite/standalone/Makefile.am: Add test-hashing.
* test-suite/standalone/test-hashing.c: Add.
|
|
This is checked by optargs.test, which 3b47f87618047ebb8812788c64a44877a4f2e0dd
broke.
* module/language/tree-il/peval.scm (peval): Account for no clause (= no body)
case-lambda.
|
|
* module/language/tree-il/peval.scm (peval): Reduce multiple case lambda
in <call> trees according to the number of arguments. Do not try to
reduce case-lambda using keyword arguments.
* test-suite/tests/peval.test: Tests.
|
|
These were found with:
make GUILE_WARNINGS='-W1 -Wunused-module'
* module/ice-9/copy-tree.scm:
* module/ice-9/eval-string.scm:
* module/ice-9/getopt-long.scm:
* module/ice-9/poll.scm:
* module/ice-9/popen.scm:
* module/ice-9/sandbox.scm:
* module/ice-9/threads.scm:
* module/sxml/apply-templates.scm:
* module/sxml/simple.scm:
* module/system/base/types.scm:
* module/system/repl/command.scm:
* module/system/repl/common.scm:
* module/system/repl/coop-server.scm:
* module/system/repl/debug.scm:
* module/system/repl/error-handling.scm:
* module/system/repl/repl.scm:
* module/system/repl/server.scm:
* module/system/vm/assembler.scm:
* module/system/vm/disassembler.scm:
* module/system/vm/dwarf.scm:
* module/system/vm/elf.scm:
* module/system/vm/frame.scm:
* module/system/vm/inspect.scm:
* module/system/vm/linker.scm:
* module/system/vm/program.scm:
* module/system/vm/trace.scm:
* module/system/vm/trap-state.scm:
* module/system/vm/traps.scm:
* module/system/xref.scm:
* module/texinfo/indexing.scm:
* module/texinfo/plain-text.scm:
* module/texinfo/reflection.scm:
* module/texinfo/string-utils.scm:
* module/web/client.scm:
* module/web/http.scm:
* module/web/request.scm:
* module/web/response.scm: Remove imports of unused modules.
|
|
* module/language/tree-il/analyze.scm (<module-info>): New record type.
(unused-module-analysis): New variable.
(make-unused-module-analysis): New analysis.
(make-analyzer): Add it.
* module/system/base/message.scm (%warning-types): Add 'unused-module'.
* test-suite/tests/tree-il.test (%opts-w-unused-module): New variable.
("warnings")["unused-module"]: New test prefix.
* NEWS: Update.
|
|
* module/language/tree-il/fix-letrec.scm (fix-letrec): Remove "Local
Variables" bit.
* .dir-locals.el (scheme-mode): Add 'record-case'.
|
|
* doc/ref/api-control.texi (Raising and Handling Exceptions): Fix typo,
h/t gtz on #guile.
|