summaryrefslogtreecommitdiff
path: root/module
AgeCommit message (Collapse)AuthorFilesLines
2021-04-28Fix duplicates handlers for interfaces that use interfacesAndy Wingo1-3/+3
* module/ice-9/boot-9.scm (duplicate-handlers): Use module-variable instead of module-local-variable in the warn-override-core, first, and last handlers. Fixes #47084 mostly, though relative to pre-3.0 there is still a difference in that a module needs to explicitly declare which bindings are intended as replacements -- a binding being a replacement is a property of the module in 3.0, rather than the variable as was the case before 3.0.
2021-04-27Add ice-9/read.scm to extra_distAndy Wingo1-0/+1
* module/Makefile.am (NOCOMP_SOURCES): Add ice-9/read.scm.
2021-04-27Fix closure-conversion bug for SCC with all free vars prunedAndy Wingo1-5/+11
* module/language/cps/closure-conversion.scm (convert-one): Fix bug when getting value of SCC whose free variables have been elided. Thanks to abcdw for the report! * test-suite/tests/compiler.test ("cse auxiliary definitions"): Remove spurious newline. ("closure conversion"): New test.
2021-04-26Bump minor objcode version for new intrinsicsAndy Wingo1-1/+1
* libguile/loader.h (SCM_OBJCODE_MINOR_VERSION): Bump. * module/system/vm/assembler.scm (*bytecode-minor-version*): Bump.
2021-04-26Allow contification for $callkAndy Wingo1-36/+132
* module/language/cps/contification.scm (compute-first-class-functions): (compute-functions-called-by-label): (compute-functions): (compute-arities): (compute-contification-candidates): (compute-call-graph): (compute-contification): (apply-contification): (contify): Given that the frontend will produce $callk now, allow it to be contified if such callees are all called with the same continuation.
2021-04-26CPS conversion calls module variables through trampolinesAndy Wingo1-2/+86
* module/language/tree-il/compile-cps.scm (module-call-stubs): (module-call-label, convert, cps-convert/thunk): Arrange to call module variables through out-of-line trampolines with unchecked arity. This should speed up compile time in large files and reduce code size on hot paths.
2021-04-26Fix CPS optimizations to allow callk in front halfAndy Wingo4-34/+45
* module/language/cps/closure-conversion.scm: Use standard compute-reachable-functions and intmap-select from utils to filter reachable functions, allowing us to pick up callk. Adapt some uses to expect callk for calls. * module/language/cps/self-references.scm (resolve-self-references): Subst the proc, if it's there. * module/language/cps/split-rec.scm (compute-free-vars): Add a case for callk.
2021-04-26Simplify module variable lookup slow-pathAndy Wingo5-9/+56
* libguile/intrinsics.h: * libguile/intrinsics.c (lookup_bound_public, lookup_bound_private): Two new intrinsics. (scm_bootstrap_intrinsics): Wire them up. * libguile/jit.c (compile_call_scm_from_scmn_scmn): (compile_call_scm_from_scmn_scmn_slow): (COMPILE_X8_S24__N32__N32__C32): Add JIT support for new instruction kind. * libguile/vm-engine.c (call-scm<-scmn-scmn): New instruction, takes arguments as non-immediate offsets, to avoid needless loads and register pressure. * module/language/cps/effects-analysis.scm: Add cases for new primcalls. * module/language/cps/compile-bytecode.scm (compile-function): Add new primcalls. * module/language/cps/reify-primitives.scm (cached-module-box): If the variable is bound, call lookup-bound-public / lookup-bound-private as appropriate instead of separately resolving the module, name, and doing the bound check. * module/language/tree-il/compile-bytecode.scm (emit-cached-module-box): Use new instructions. * module/system/vm/assembler.scm (define-scm<-scmn-scmn-intrinsic): (lookup-bound-public, lookup-bound-private): Add assembler support.
2021-04-25Fix cached-module-box cache keysAndy Wingo1-2/+2
* module/language/cps/reify-primitives.scm (cached-module-box): Include public? in cache key, so we don't accidentally alias private and exported names. Also include bound?, to avoid a window in which thread A resolves and caches var V in preparation for setting it, but thread B sees V for ref before it was initialized.
2021-04-25Fix bugs introduced when allowing $kfun -> $kargsAndy Wingo2-3/+6
* module/language/cps/dce.scm (compute-known-allocations): * module/language/cps/simplify.scm (eta-reduce): Allow the case-lambda without clauses.
2021-04-23Fix comments in cps/compile-bytecodeAndy Wingo1-2/+5
* module/language/cps/compile-bytecode.scm (compile-function): Fix unfinished comments.
2021-04-21New pass: elide-arity-checksAndy Wingo4-1/+112
* module/language/cps/elide-arity-checks.scm: New file. Elides argument count checks for known callers. * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Add new file. * module/language/cps/optimize.scm (optimize-first-order-cps): * module/system/base/optimize.scm (available-optimizations): Add new pass.
2021-04-21Allow $kargs as entry of $kfunAndy Wingo9-54/+101
* module/language/cps.scm: * module/language/cps/contification.scm: * module/language/cps/cse.scm: * module/language/cps/dce.scm: * module/language/cps/simplify.scm: * module/language/cps/slot-allocation.scm: * module/language/cps/types.scm: Allow $kargs to follow $kfun. In that case, the function must be well-known and callers are responsible for calling with the appropriate arity. * module/language/cps/compile-bytecode.scm: Emit "unchecked-arity" for $kargs following $kfun. * module/system/vm/assembler.scm: Adapt.
2021-04-21Mark some elisp runtime modules as non-declarativeAndy Wingo2-2/+4
* module/language/elisp/runtime/function-slot.scm (language): * module/language/elisp/runtime/value-slot.scm (language): Non-declarative.
2021-04-21Optimize letrec* binding order in fix-letrecAndy Wingo1-3/+41
* module/language/tree-il/fix-letrec.scm (reorder-bindings): (fix-letrec): Reorder definitions so that lambdas tend to stick together, to avoid "complex" expressions interposing in lambda SCCs.
2020-08-13ice-9 ftw: Use 'absolute-file-name?' in 'nftw'.Jan (janneke) Nieuwenhuizen1-4/+1
* module/ice-9/ftw.scm (abs?): Remove. (nftw): Use 'absolute-file-name?' instead.
2021-04-01Fix handling of parameter lists to elisp defun to allow nil.Mikael Djurfeldt1-0/+1
Thanks to Vasilij Schneidermann.
2021-03-19goops: Preserve all slot options in redefinable classes.David Thompson1-7/+9
* module/goops.scm (compute-slots): Fix <redefinable-class> slot transformation. * test-suite/tests/goops.test ("slot options on redefinable classes"): Add a test.
2021-03-19web: 'tls-wrap' returns an unbuffered custom port.Ludovic Courtès1-3/+10
This mirrors Guix commit b168acae2a01fd84075cc134a6140594a978fde5. * module/web/client.scm (tls-wrap)[unbuffered]: New procedure. Pass the result of 'make-custom-binary-input/output-port' to 'unbuffered'.
2021-03-19web: 'tls-wrap' avoids intermediate buffer.Ludovic Courtès1-10/+7
This mirrors Guix commit 279d932b1ca7bfbb8657c41a84616dd0dfc6e0a8. * module/web/client.scm (tls-wrap)[read!]: Read straight into BV instead of calling 'get-bytevector-some' and 'unget-bytevector'.
2021-03-13On Cygwin, 'lib' DLLs use 'cyg' prefixMike Gran1-1/+23
When using automake and libtool to build DLLs on Cygwin, libtool will rename libXXX to cygXXX. 'load-foreign-library' should emulate libltdl behavior and search for DLLs using that convention. * module/system/foreign-library.scm (lib->cyg): new helper function (load-foreign-library): add rename-on-cygwin? option to rename libraries using Cygwin semantics * test-suite/tests/foreign.test: new test section 'lib->cyg' * doc/ref/api-foreign.text: document new rename-on-cygwin? option for load-foreign-library
2021-03-12Fix hash-table-merge! bug.Ricardo G. Herdt1-1/+1
* module/srfi/srfi-69.scm : fold over second hash table.
2021-03-12Fix suspendable implementation of 'get-bytevector-some!'Andrew Whatson1-1/+1
* module/ice-9/suspendable-ports.scm (get-bytevector-some!): Fix incorrect arguments to bytevector-copy!
2021-03-12Revert "Handle CRLF and Unicode line endings in read-line"Andy Wingo2-80/+11
This reverts commit 0f983e3db0c43ad7c89f57ea84f792ede373ba0c. After discussing with Mike we are going to punt the read-line changes for now. Open the port in O_TEXT mode if you want to chomp the CR in CFLF sequences.
2021-03-11Handle CRLF and Unicode line endings in read-lineMike Gran2-11/+80
* libguile/rdelim.c (scm_read_line): handle CRLF, LS and PS * module/ice-9/suspendable-ports.scm (read-line): handle CRLF, LS, and PS * module/web/http.scm (read-header-line): take advantage of CRLF in read-line (read-header): don't need to test for \return * test-suite/tests/rdelim.test: new tests for read-line CRLF, LS and PS * doc/ref/api-io.texi: update doc for read-line
2021-03-11ice-9 ftw: handle non-working inodesMichael Gran1-13/+29
* module/ice-9/ftw.scm (visited?-proc): accept filename for string hash (file-system-fold): use string hash if ino = 0 (ftw): use new visited?-proc * test-suite/tests/ftw.test (visited?-proc valid inodes): add filenames to visited?-proc calls (visited?-proc broken inodes): new tests (%top-srcdir): canonicalize-path
2021-03-11ice-9 ftw: handle missing getuid and getgidMichael Gran1-15/+25
* module/ice-9/ftw.scm (getuid-or-false, getgid-or-false): new macros (stat-dir-readable?-proc): don't overwrite arguments (ftw, nftw): use new macros * test-suite/tests/ftw.test (test-EACCES): don't presume getuid exists
2021-03-10Add mkstemp; undocument mkstemp!Andy Wingo1-6/+6
* doc/ref/posix.texi (File System): Update to document mkstemp only. * libguile/filesys.c: Make a mkstemp that doesn't modify the input template. Instead the caller has to get the file name from port-filename. (scm_mkstemp): Use the new mkstemp to implement mkstemp!. Can't deprecate yet though as the replacement hasn't been there for long enough. * libguile/posix.c (scm_tempnam): Update to mention mkstemp instead. * module/system/base/compile.scm (call-with-output-file/atomic): Use mkstemp. * test-suite/tests/posix.test: * test-suite/tests/r6rs-files.test: Use mkstemp. * NEWS: Update.
2021-03-09Write a proper vector-map and vector-for-each for (rnrs base)Linus1-5/+76
* module/rnrs/base.scm (vector-map vector-for-each): Rewrite to not be slow. * NEWS: Update.
2021-03-09Document syntax-sourcevAndy Wingo1-1/+2
* NEWS: Add doc link. * doc/ref/api-macros.texi (Syntax Transformer Helpers): Document syntax-sourcev. * module/system/syntax.scm: Re-export syntax-sourcev.
2021-03-07Fix reading #!!#Andy Wingo1-8/+10
* module/ice-9/read.scm (%read): Fix reading #!!#. * test-suite/tests/reader.test ("reading"): Add some test cases.
2021-03-05tweak unknown hash object error in readerMichael Gran1-1/+1
This makes it match the other species of unknown hash object error when reading number with radix. * module/ice-9/read.scm (read-sharp): modified
2021-03-05print token in error msg for unknown hash objectMichael Gran1-1/+1
* module/ice-9/read.scm (read-number-and-radix): modified
2021-03-05Handle <eof> in reader's character escape sequencesMichael Gran1-0/+6
* module/ice-9/read.scm (read-r6rs-hex-escape, read-fixed-hex-escape): modified
2021-03-05Fix reading "#;", "'", and similar premature-EOF situationsAndy Wingo1-24/+24
* module/ice-9/read.scm (%read): Adjust how subexpressions are read to error on EOF. Improve the error message. * test-suite/tests/reader.test ("#;"): Adapt expectation.
2021-03-05Fix reading of #true / #falseAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix bad argument order to unread-char.
2021-03-04Syntax objects print with source locationsAndy Wingo1-2/+11
* module/system/syntax.scm (print-syntax): Print source locations.
2021-03-04Add docstring for array-shapeDaniel Llorens1-2/+12
2021-03-04Fix reading improper curly-infix expressionsAndy Wingo1-3/+3
* module/ice-9/read.scm (%read): A fix to last night's fix, to make srfi-105.test pass.
2021-03-03Fix reading #c32 vectorsAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix a wee typo.
2021-03-03Fix some srfi-105 parsing errorsAndy Wingo1-7/+8
* module/ice-9/read.scm (%read): Fix parsing errors.
2021-03-03Fix length of \U hex escape in new readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): \U escape is 6 digits long.
2021-03-03Fix bug in new array readerDaniel Llorens1-4/+2
* module/ice-9/read.scm (read-array): Return pair for dimension when len is given; single number is lbnd for list->typed-array. * test-suite/tests/arrays.test: More test cases for the reader.
2021-03-03Read-in-scheme replaces boot "read" definitionAndy Wingo6-29/+49
Instead of defining a separate module, given that "read" calls are quite all over the place, we're just going to replace the boot "read" binding with read.scm. This way, we'll be able to remove support for reader options in the boot reader, as it will only ever be used for a finite set of files. * NEWS: Update. * module/Makefile.am (ice-9/boot-9.go): Depend on read.scm. (SOURCES): * am/bootstrap.am (SOURCES): Don't build a ice-9/read.go, as we include it. * module/ice-9/boot-9.scm (read-syntax): Define here, as "include" now uses it. (read-hash-procedures, read-hash-procedure, read-hash-extend): New procedures. Will replace C variants. (read, read-syntax): Include read.scm to define these. * module/ice-9/psyntax-pp.scm (include): Regenerate. * module/ice-9/psyntax.scm (include): Use read-syntax, so we get better source information. * module/ice-9/read.scm (let*-values): New local definition, to avoid loading srfi-11. (%read): Use list->typed-array instead of u8-list->bytevector. * module/language/scheme/spec.scm: Remove (ice-9 read) import; read-syntax is there in the boot environment
2021-03-03Fix unterminated #!...!# error message in Scheme readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Tweak "unterminated block constant" error to be more compatible with C reader.
2021-03-03Fix reading neoteric exprs in Scheme readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Call the inner reader, not the outer reader.
2021-03-03Fix reader extensions in Scheme readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix invocation of hash procedure.
2021-03-03Remove textual-ports include from (ice-9 read)Andy Wingo1-2/+1
* module/ice-9/read.scm: We'll be loading this file early, so avoid extraneous deps.
2021-03-02Fix another typo in routine reading arraysDaniel Llorens1-1/+1
* module/ice-9/read.scm: As stated. * test-suite/tests/arrays.test: Test a fixed case.
2021-03-02Fix bug reading arrays with lengthsAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix typo.