wingo pushed a change to branch wip-tailify in repository guile. discard fa532a603 Add tailify pass discard 2d6ad9d55 Add new $calli expression type. discard b74f992cc Add indirect-tail-call VM instruction add 71e201d5c Use more logtest in cse.scm add e60469c8b Add primitive alias analysis to CSE add 98dff7a75 Mention package GNU Gperf in README. add c85724bd0 (ice-9 format): Fix scaling floats with leading zeros add 6be51f9bb Provide xxvector-copy and xxvector-copy! for srfi-4 vectors add 06de31ecb Fix doc typo add 3b42b1eb5 sxml: Make parser thread-safe. add b1bbafa50 Update NEWS. add 708df04f3 Update NEWS add a960d7869 Improve support for R6/R7 SRFI module name formats. add 492bd6388 Add support for arc add ab9c0c9ca Const qualify return of strerror add c5f443de7 Fix typos in SRFI docs add 1a8294f49 Fix bounds check in recvfrom! add ffb33fd66 module/system/base/target.scm: support riscv32 add bf9d30f3c Limit the range of ash, round-ash count argument to INT32 add c6b1171c6 Avoid ash with arguments that might overflow in (language cps types) add 24116be82 Fix brace style for bf9d30f3c3fd03cb37d604f1927e9ce5c699338b add 496f69dba Support C99 complex types in (system foreign) add a227c84a7 Refactor compile-bytecode add 4fcd643ad Refactor send and receive shuffles in slot allocation add 5c7638162 Allow callk to continue to kargs add dad113d80 Add new pass to optimize away return value count checks add 6f1b620b8 Add -Ooptimize-known-return-types at -O2 add 0b136c309 Fix doc typo add 3badbb71c Mention package GNU Autopoint in README. add 6af3362b0 Support C99 complex types conditionally in (system foreign) add 5759e3718 New function srfi-4-vector-type-size in (srfi srfi-4 gnu) add dc7f1b403 Review REFFIXME add d70c1dbeb New function bitvector-copy (scm_bitvector_copy) add 0e505b703 Fix type confusion in heap-numbers-equal? calls from VM add 1148eb505 -Oresolve-free-vars pass gracefully handles failed autoloads. add 52e310a2a Avoid quadratic behavior in id-var-name add c768115d9 Add new integers.[ch] add 5321899b9 Implement odd? and even? with new integer lib add 44c654aa3 Implement abs with new integer lib add 31da9be6c Implement floor-quotient with new integer lib add 2e8036ff0 Implement floor-remainder with new integer lib add 8a6353745 Implement floor-divide with new integer lib add c1d8dd5e6 Implement ceiling-quotient with new integer lib add 55f93d7d2 Implement ceiling-remainder with new integer lib add 1e1b23022 Implement ceiling-divide with new integer lib add ff636774b Implement truncate-quotient with new integer lib add cbd62a0ef Implement truncate-remainder with new integer lib add f8a92773a Implement truncate-divide with new integer lib add 0ccdf06c8 Implement centered-quotient with new integer lib add 99b046d58 Implement centered-remainder with new integer lib add ccb78fc7b Implement centered-divide with new integer lib add 9a358a963 Implement round-quotient with new integer lib add b11464264 Implement round-remainder with new integer lib add 025c7c804 Implement round-divide with new integer lib add 1e0797db7 Implement gcd with new integer lib add 6fa9fcb31 Implement lcm with new integer lib add 4a380aa6a Implement scm_logand with new integer library add 7e85ffa82 Implement scm_logior with new integer library add 459163fca Implement scm_logxor with new integer library add 6298d7311 Implement scm_logtest with new integer library add 89cd48fca Implement scm_logbit_p with new integer library add b41714d27 Implement scm_lognot with new integer library add 2d5dc6a14 Implement scm_modulo_expt with new integer library add 3ad3ac740 Reimplement integer-expt in Scheme add 35861b28b Implement scm_ash with new integer library add 88f56e91a Implement scm_bit_extract with new integer library add 7ec40fe5b Implement scm_logcount with new integer library add 8b99ace65 Integer library takes bignums via opaque struct pointer add fc4228c19 Implement scm_integer_length with new integer library add fc36cd610 Implement integer-to-string with new integer library add 24ce3cedf Simplify scm_bigprint add ef5ade30f Build scm_integer_p on scm_is_integer, not vice versa add 44bee0851 Reimplement = on integer lib, clean up scm_num_eq_p add 54d772252 Clean up <, reimplement in terms of integer lib add f507c9738 positive?, negative? use integer lib add 281aed8aa Simplify implementation of min, max add 10953e067 Clean up scm_sum add c096670d3 Simplify scm_difference, use integer lib add 9179525a0 Simplify scm_product, use integer lib add 3e08c9cec Remove support for allowing exact numbers to be divided by zero add 8b2d58b99 Clean up scm_divide add f2390e510 Fix deprecated bit-count* when counting 0 bits add 7c53325c3 Fix scm_integer_to_double_z to always round; clean ups add f4db3ca3f Reimplement scm_is_{un,}signed_integer for bignums add 27910181c Reimplement scm_from_int8 etc add 717e787da Reimplement scm_{to,from}_{int32,uint32} add 1802ed17b Reimplement scm_{to,from}_{int64,uint64} add 106c5de5f Implement scm_{to,from}_wchar inline add debcccc21 Remove unused conv-{u,}integer.i.c add 9a91c20a5 scm_to_mpz uses integer lib add 63a18a6c1 Reimplement exact-integer-sqrt with integers.[ch] add 124d88922 Refactor scm_sqrt in terms of integers.[ch] add f167627bb Expose frexp from integers lib add c06fc3df5 Remove dead bignum frexp code from numbers.c add 0754dbf3e divide2double refactor add a4524da8c Simplify scm_exact_integer_quotient add 3d56a9073 Remove last non-admin SCM_I_BIG_MPZ uses in numbers.c add 7029a9c49 Simplify magnitude, angle add 0c502a4d3 Use scm_integer_to_double_z in numbers.c instead of big2dbl add bdddef3cf Avoid scm_i_mkbig outside numbers.c. add 399d0c874 Start porting srfi-60 off the bad bignum interfaces add e78bcdc29 Finish srfi-60 port off old scm mpz API add a0765f564 scm_to_ipv6 uses scm_to_mpz add aa5455ea9 Bignums avoid both custom GMP allocator and finalizers add 443d23982 take_mpz optimization add eac47c3e4 Fix bug when making mpz from 0 add 548122267 Re-rewrite integer-expt in C add d89f75c53 Optimize scm_integer_mul_zi add ad6811a12 Optimize scm_integer_mul_zz. add 272351371 Less pessimal scm_integer_sub_zi add cae8b3016 Start to optimize scm_integer_sub_iz add 95350aae8 Avoid bignum clone in scm_integer_sub_zz add cc52f01ab Optimize bignum add to avoid temporary allocations add 210ab8ff7 Optimize bignum subtraction add 2cf80ca23 Optimize scm_integer_mul_ii add 6fe43301a Optimize integer-expt for fixnums add 9e5aa173c Optimize logand against a positive inum add 6058d9e05 Simplify scm_abs for the real case add 4feff820b Don't use HAVE_COPYSIGN in libguile/numbers.c add 19bc021e3 Have log and log10(real nan) return real nan regardless of sign add 222b32086 Remove dead code in scm_integer_inexact_sqrt_z add d01ab7bf5 Fix inlinable-exports bug for pure modules add 373f35b5f peval cross-module-inlining gracefully handles missing interface add 6ed66f42c Add -ftlo support add 9b9149a5b Rework bootstrap to be reproducible add 9654ab1f2 Fix reproducibility for inlinable-exports add e933282f2 Prebuild fewer files add 54bbe0b28 Avoid source properties in psyntax add 62fc44e6e Slight bignum-fixnum multiplication optimization add 4e92f1d7c Update NEWS add 2ebf03970 Remove unused 'scm_i_c_make_symbol'. add 8e2e2ceb1 Deprecate symbol properties. add 7e3470343 NEWS fixup add 2f9bc7fe6 Update unicode tables to Unicode 14.0.0; initial charsets immutable add 032acdeac 'string->symbol' avoids copying the underlying string. add 2aed3c117 psyntax: Pass source vectors to tree-il constructors. add 2e10a1257 Align return type of scm_to_wchar with its declaration. add 27b86a6f3 Align argument type of scm_to_wchar with its declaration. add 3d6999329 Minor NEWS tweaks add 5319fd38e GNU Guile v3.0.8 add e734a6a60 Exclude ChangeLog from assert-no-store-file-names distcheck rule add 5a3086e68 Bump user-visible copyright years to 2022 add 68aeffe8d Typo fix: Use correct variable name in example add 24b30130c build: When cross-compiling, get type sizes of the target system. add a1a1400c7 Update NEWS. add c572b11f3 tests: Add read-syntax + syntax-source test. add 347321ece psyntax: Honor source properties for things other than syntax objects. add f047133e7 build: Test '-flto' on both compiler and linker. add f18f67022 tests: web-server: Wait until the server is listening. add 6e82a4516 Fix "non-revealed port is closed" ports.test add 63886aeda Reimplement 'unidata_to_charset.pl' in Awk. add 9f8e05e51 Create 'srfi-14.i.c' during build. add 446842733 Update NEWS. add cc4559768 Find unidata_to_charset.awk from commit 9f8e05e5 in $(srcdir). add 64449a835 'connect' handles EAGAIN like EINPROGRESS. add e8a41aee2 'module-define!' honors the 'module' parameter. add 158da6966 Allow (library ...) form in cond-expand inside R7RS define-library. add e4e8afd6c Allow empty vendor string in GNU target triplets. add 01b686b70 Allow null bytes in UNIX sockets. add 445624575 Add missing #:modules argument for coverage-data->lcov. add 7e048c6c5 Update NEWS. add a84d8f647 web: send capitalized authorization header scheme add 9a3353a99 web: Handle ending CRLF (\r\n) for chunked input and output ports. add baa142433 web: Don't hide missing data in the chunked input port. add 6da4be170 Define IN6ADDR_ANY and IN6ADDR_LOOPBACK. add abd39f332 Define IPPROTO_IPV6 and IPV6_V6ONLY. add 8c976c6a1 Update NEWS. add 50d4b5020 Check for gperf at configure time add c01ca10b3 web: Do not wrap TLS port on GnuTLS >= 3.7.7. add 317b06bf8 web: 'tls-wrap' retries handshake upon non-fatal errors. add 01e960ede Update NEWS. add 56b1ea900 'system*' can no longer close file descriptor 2. add c746586de doc: Add car+cdr example add eb5ecf494 Properly display locations in "source vector" form. add 61d8dab8e In curried definitions, move docstrings to outermost lambda add 3cd488150 doc: Add documentation of the "b" flag to 'open-file'. add a356ceebe Add support for "e" flag (O_CLOEXEC) to 'open-file'. add 0aa1a9976 'primitive-load' opens files with O_CLOEXEC. add 9592516bf string-fun: Fix typo add 1d313bf5f 'pipe' now takes an optional 'flags' parameter. add 61393a5da test-suite: Remove obsolete use of 'debug-enable'. add 130463be2 When fork unavailable, skip standalone tests that require it add 775149f0f in ftw test, don't presume symlink is defined add 426ed4068 in ftw test, skip EACCESS test on MinGW add c0004442b Fix bad arguments to range_error() in numbers.c add d1a4b101b Fix doc for string args to error C API add df86a2a8c Finalization thread exits when it gets EOF on its pipe. add e2797f529 Baseline compiler no longer crashes on (not (list 1 2)). add 6c4738ee4 doc: Clarify reference to (sxml transform) module. add b16dbb14b doc: Fix typo under "CPS Soup". add 78c7772eb doc: Fix typo in 'coverage-data->lcov' example. add 3ed7673ac srfi-35: Fix expansion of 'condition' for compound conditions. add f5c064576 Avoids deprecated egrep in c-api.test add 45cc892fe Modifies command line quoting in c-api.test add 584ba588e Test for out of range depth in fluid-ref* add 328d6039d Update reference to the GNU Coding Standards. add 6847365a9 Define SO_RCVTIMEO and SO_SNDTIMEO. add bc3b1a4e2 doc: Document how (ice-9 format) replaces 'format'. add da254d677 Update libtool initialization in configure script add bec1918b3 Presume const is always available add 78a98062a Use autoconf's ability to choose the latest version of C add a274e1ced Remove obsolete macro AM_PROG_CC_C_O in configure script add 128e0a347 Remove AC_HEADER_STDC from configure.ac add 9b357bace Presume ISO C90 headers are always available add 382729142 Presume ISO C90 functions are always available add df8e772f3 Presume time.h and sys/time.h don't conflict when included add e9db8a29e Remove special logic for the obscure CMU C library's libc.h add 2b73ef4de Modernizes labels-as-values.m4 add d3261e849 Presumes signal handler return void add b6a84d50e autoupdate acinclude.m4 add 1ddc4eb96 Fixes arg type for scm_integer_from_mpz add 273bfe751 Allow file ports in ‘chdir’ when supported. add 30247dc41 Allow file ports in ‘readlink’. add 9ffd29724 Allow file ports in ‘utime’. add 6c350b609 Define ‘symlinkat’ wrapper when supported. add 58ddd5c7b Define bindings to ‘mkdirat’ when the C function exists. add f018e0d48 Correct documentation of ‘mkdir’ w.r.t. the umask. add 24028e75c Define AT_REMOVEDIR and others when available. add 3a0554c60 Define a Scheme binding to ‘renameat’ when it exists. add 19b48b1c4 Define a Scheme binding to ‘fchmodat’ when it exists. add 3b45185d8 Define a Scheme binding to ‘unlinkat’ when it exists. add 0af3c2f50 Define a Scheme binding to ‘fchownat’ when it exists. add cf255dd3a Define a Scheme binding to ‘fstatat’ when available. add c8b81ffb3 Define Scheme bindings to ‘openat’ when available. add 793fb46a1 Update NEWS. add 11dea3c36 disassembler: Show intrinsic name for 'call-' instructions. add f72cd7915 doc: Fix typo in VM instruction name. add e47a15331 Work around unwanted stack retention when using prompts. add a1a85581f Fix possible deadlock in 'lock-mutex'. add 02f69c1d8 Add tests for warning locations. add c7fa78fc7 Avoid 'frame-local-ref' errors when printing backtrace. add d184d0934 Fix order-of-side-effects bug in (eq? x y z) expansion add ff7328df0 Fix peval bug when expand-primitives introduces lexicals new 402cf8653 Add indirect-tail-call VM instruction new 6cfe0045c Add new $calli expression type. new ea482c6ea Add tailify pass
This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (fa532a603) \ N -- N -- N refs/heads/wip-tailify (ea482c6ea) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: GUILE-VERSION | 6 +- HACKING | 5 +- Makefile.am | 8 +- NEWS | 285 +- README | 2 + acinclude.m4 | 85 +- am/bootstrap.am | 424 +- configure.ac | 161 +- doc/ref/api-control.texi | 18 +- doc/ref/api-coverage.texi | 2 +- doc/ref/api-data.texi | 92 +- doc/ref/api-foreign.texi | 7 +- doc/ref/api-io.texi | 7 + doc/ref/api-procedures.texi | 4 +- doc/ref/api-utility.texi | 5 +- doc/ref/compiler.texi | 2 +- doc/ref/guile-invoke.texi | 15 +- doc/ref/guile.texi | 3 +- doc/ref/libguile-program.texi | 10 +- doc/ref/misc-modules.texi | 10 + doc/ref/posix.texi | 147 +- doc/ref/srfi-modules.texi | 91 +- doc/ref/sxml.texi | 16 +- doc/ref/vm.texi | 4 +- doc/ref/web.texi | 3 + libguile/Makefile.am | 19 +- libguile/UnicodeData.txt | 34658 ++++++++++++++++++++++++ libguile/bitvectors.c | 47 + libguile/bitvectors.h | 1 + libguile/bytevectors.c | 15 +- libguile/conv-integer.i.c | 148 - libguile/conv-uinteger.i.c | 121 - libguile/deprecated.c | 146 +- libguile/deprecated.h | 25 +- libguile/eq.c | 17 +- libguile/filesys.c | 414 +- libguile/filesys.h | 9 + libguile/finalizers.c | 9 +- libguile/foreign.c | 71 + libguile/foreign.h | 6 + libguile/fports.c | 11 +- libguile/gen-scmconfig.c | 48 +- libguile/hash.c | 3 - libguile/i18n.c | 9 - libguile/init.c | 2 +- libguile/integers.c | 3424 +++ libguile/integers.h | 238 + libguile/load.c | 4 +- libguile/net_db.c | 4 - libguile/numbers.c | 5995 +--- libguile/numbers.h | 48 +- libguile/posix.c | 113 +- libguile/posix.h | 5 +- libguile/random.c | 22 +- libguile/regex-posix.c | 7 - libguile/scmsigs.c | 28 +- libguile/simpos.c | 2 - libguile/socket.c | 122 +- libguile/srfi-14.c | 117 +- libguile/srfi-14.i.c | 10011 ------- libguile/srfi-4.c | 25 +- libguile/srfi-4.h | 2 + libguile/srfi-60.c | 206 +- libguile/strings.c | 32 +- libguile/strings.h | 7 +- libguile/symbols.c | 54 +- libguile/symbols.h | 11 +- libguile/syscalls.h | 2 + libguile/threads.c | 19 +- libguile/unidata_to_charset.awk | 417 + libguile/unidata_to_charset.pl | 404 - libguile/vectors.c | 5 +- libguile/vm.c | 17 +- m4/labels-as-values.m4 | 13 +- meta/build-env.in | 15 +- meta/uninstalled-env.in | 4 +- module/Makefile.am | 405 +- module/ice-9/boot-9.scm | 4 +- module/ice-9/command-line.scm | 4 +- module/ice-9/curried-definitions.scm | 68 +- module/ice-9/format.scm | 13 +- module/ice-9/psyntax-pp.scm | 320 +- module/ice-9/psyntax.scm | 129 +- module/ice-9/r6rs-libraries.scm | 130 +- module/ice-9/r7rs-libraries.scm | 5 +- module/ice-9/string-fun.scm | 2 +- module/language/cps/compile-bytecode.scm | 275 +- module/language/cps/contification.scm | 9 +- module/language/cps/cse.scm | 2 +- module/language/cps/effects-analysis.scm | 81 +- module/language/cps/optimize.scm | 2 + module/language/cps/reify-primitives.scm | 20 +- module/language/cps/return-types.scm | 170 + module/language/cps/slot-allocation.scm | 102 +- module/language/cps/types.scm | 4 +- module/language/cps/utils.scm | 8 +- module/language/cps/verify.scm | 17 +- module/language/tree-il.scm | 19 +- module/language/tree-il/analyze.scm | 8 +- module/language/tree-il/compile-bytecode.scm | 4 +- module/language/tree-il/compile-cps.scm | 2 +- module/language/tree-il/inlinable-exports.scm | 14 +- module/language/tree-il/peval.scm | 50 +- module/language/tree-il/primitives.scm | 46 +- module/language/tree-il/resolve-free-vars.scm | 36 +- module/srfi/srfi-35.scm | 6 +- module/srfi/srfi-4.scm | 3 + module/srfi/srfi-4/gnu.scm | 126 +- module/sxml/upstream/input-parse.scm | 5 +- module/system/base/message.scm | 19 +- module/system/base/optimize.scm | 7 +- module/system/base/target.scm | 14 +- module/system/base/types.scm | 4 +- module/system/foreign.scm | 24 + module/system/repl/common.scm | 4 +- module/system/vm/assembler.scm | 14 +- module/system/vm/coverage.scm | 12 +- module/system/vm/disassembler.scm | 47 +- module/system/vm/frame.scm | 12 +- module/web/client.scm | 146 +- module/web/http.scm | 35 +- prebuilt/i686-pc-linux-gnu/Makefile.am | 3 +- prebuilt/mips-unknown-linux-gnu/Makefile.am | 3 +- prebuilt/x86_64-unknown-linux-gnu/Makefile.am | 3 +- {bootstrap => stage0}/Makefile.am | 3 +- {emacs => stage1}/Makefile.am | 10 +- {emacs => stage2}/Makefile.am | 13 +- test-suite/guile-test | 5 +- test-suite/standalone/Makefile.am | 5 +- test-suite/standalone/test-close-on-exec | 41 + test-suite/standalone/test-signal-fork | 5 +- test-suite/standalone/test-unwind.c | 6 +- test-suite/tests/00-socket.test | 79 +- test-suite/tests/bitvectors.test | 23 +- test-suite/tests/c-api.test | 4 +- test-suite/tests/compiler.test | 45 +- test-suite/tests/cross-compilation.test | 4 +- test-suite/tests/curried-definitions.test | 52 +- test-suite/tests/filesys.test | 536 + test-suite/tests/fluids.test | 4 + test-suite/tests/foreign.test | 9 +- test-suite/tests/format.test | 8 +- test-suite/tests/ftw.test | 86 +- test-suite/tests/numbers.test | 16 +- test-suite/tests/peval.test | 10 +- test-suite/tests/ports.test | 7 +- test-suite/tests/posix.test | 122 +- test-suite/tests/reader.test | 16 +- test-suite/tests/srfi-35.test | 18 +- test-suite/tests/srfi-4.test | 41 + test-suite/tests/tree-il.test | 48 +- test-suite/tests/web-http.test | 40 +- test-suite/tests/web-server.test | 25 +- 153 files changed, 44917 insertions(+), 17364 deletions(-) create mode 100644 libguile/UnicodeData.txt delete mode 100644 libguile/conv-integer.i.c delete mode 100644 libguile/conv-uinteger.i.c create mode 100644 libguile/integers.c create mode 100644 libguile/integers.h delete mode 100644 libguile/srfi-14.i.c create mode 100644 libguile/unidata_to_charset.awk delete mode 100755 libguile/unidata_to_charset.pl create mode 100644 module/language/cps/return-types.scm copy {bootstrap => stage0}/Makefile.am (92%) copy {emacs => stage1}/Makefile.am (76%) copy {emacs => stage2}/Makefile.am (72%) create mode 100755 test-suite/standalone/test-close-on-exec