summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-04-04Skip ports tests that require popen if popen not availablewip-cygwin-guile-2.2Michael Gran1-89/+96
* test-suite/tests/ports.test (define-module): don't use (ice-9 popen) (if-supported): new syntax (pipe:write, pipe:write): disable if no popen provided (line-counter): disable if no popen provided
2017-04-04ports test tries to mutate a read-only stringMichael Gran1-1/+1
* test-suite/tests/ports.test ("valid wide mode string"): copy string
2017-04-04Don't run popen tests when popen not providedMichael Gran1-2/+4
* test-suite/tests/popen.test (if-supported): disable when popen not provided
2017-04-04Fix socket test throw without catchMichael Gran1-3/+3
* test-suite/tests/00-socket.test (AF_UNIX/SOCK_DGRAM, AF_UNIX/SOCK_STREAM): don't throw 'unresolved
2017-04-04Disable scm_fork on CygwinMichael Gran1-1/+7
Cygwin's fork is incompatible with Guile's thread and GC model * libguile/posix.c (HAVE_FORK) [__CYGWIN__]: #undef HAVE_FORK when __CYGWIN__
2017-04-04prefer producer/consumer to pipes on CygwinMichael Gran2-16/+148
* libguile/finalizers.c (produce_sem, consume_sem, finalization_data_lock) [SEMAPHORE]: new static vars (notify_finalizers, notify_forking) [SEMAPHORE]: new static variables (notify_finalizers_to_run) [SEMAPHORE]: use producer/consumer pattern (notify_about_to_fork) [SEMAPHORE]: use producer/consumer pattern (read_finalization_pipe_data) [SEMAPHORE]: use producer/consumer pattern (scm_set_automatic_finalization_enabled) [SEMAPHORE]: init new static vars (scm_init_finalizer_thread) [SEMAPHORE]: init new static vars * libguile/scmsigs.c (produce_sem, consume_sem, signal_data_lock, notify_signal): new static vars (take_signal) [SEMAPHORE]: use new vars (read_signal_pipe_data) [SEMAPHORE]: use new vars (start_signal_delivery_thread) [SEMAPHORE]: init new vars (scm_i_close_signal_pipe) [SEMAPHORE]: destroy new vars
2017-04-04use fallback nl_langinfo on cygwinMichael Gran1-1/+2
2017-04-04Only run tests that require fork if it is providedMichael Gran3-7/+13
* test-suite/tests/00-repl-server.test (call-with-repl-server): throw if no fork provided * test-suite/tests/00-socket.test (primitive-fork-if-available): new help procedure (bind/sockaddr, AF_UNIX/SOCK_STREAM): use helper func * test-suite/tests/ports.test ("pipe, fdopen, and line buffering"): throw if no fork provided
2017-04-03Speed up procedure-minimum-arity for fixed arityAndy Wingo1-1/+7
* libguile/programs.c (try_parse_arity): Add a case for assert-nargs-ee/locals.
2017-03-31fix repl server test to allow for ECONNABORTEDMike Gran1-2/+2
For some systems, ECONNABORTED is a failure condition for reading from closed sockets. * test-suite/tests/00-repl-server.test (HTTP inter-protocol attack): modified
2017-03-28Add allow-legacy-syntax-objects? parameterAndy Wingo4-2/+68
* module/ice-9/psyntax.scm (syntax?): Only recognize legacy syntax objects if the new allow-legacy-syntax-objects? parameter is true. * module/ice-9/boot-9.scm (allow-legacy-syntax-objects?): New parameter. * doc/ref/api-macros.texi (Syntax Transformer Helpers): Document the horrible situation with legacy syntax objects. * NEWS: Add entry.
2017-03-28Psyntax generates new syntax objectsAndy Wingo3-848/+941
* module/ice-9/psyntax.scm (make-syntax-object): Change to make new-style syntax objects. * module/ice-9/psyntax-pp.scm: Regenerate. * module/ice-9/compile-psyntax.scm (squeeze-syntax-object): Change to be functional. (squeeze-constant): Likewise. (squeeze-tree-il): Likewise. (translate-literal-syntax-objects): New pass. The compiler can embed literal syntax objects into compiled objects, but syntax can no longer be read/written; otherwise users could forge syntax objects. So for the bootstrap phase, rewrite literal constants to calls to make-syntax.
2017-03-28Beginnings of psyntax switch to new syntax objectsAndy Wingo2-2613/+2642
* module/ice-9/psyntax.scm: Baby steps towards support of a new representation of syntax objects. * module/ice-9/psyntax-pp.scm: Regenerate.
2017-03-28Add disjoint syntax object typeAndy Wingo15-8/+221
* libguile/Makefile.am (libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES): (DOT_X_FILES, DOT_DOC_FILES, noinst_HEADERS): Add syntax.c and syntax.h. * libguile/evalext.c (scm_self_evaluating_p): * libguile/goops.c (class_syntax, scm_class_of, scm_goops_early_init): * libguile/init.c (scm_init_guile): * libguile/print.c (iprin1): * libguile/tags.h (scm_tc7_syntax): * module/oop/goops.scm (<syntax>): * module/system/base/types.scm (%tc7-syntax, cell->object): * module/system/vm/disassembler.scm (code-annotation): Wire up the new data type. * libguile/syntax.c: * libguile/syntax.h: New files. * module/ice-9/boot-9.scm: Move new definitions to (system syntax internal). * module/system/syntax.scm (print-syntax): New helper. * module/system/vm/assembler.scm (statically-allocatable?) (intern-constant, link-data): Arrange to be able to write syntax objects into images. * module/language/cps/types.scm (&syntax): New type. Remove &hash-table; it was never detected, an internal binding, and we need the bit to avoid going into bignum territory.
2017-03-28Plumbing changes to rename "syntax-module"Andy Wingo5-7/+35
* module/ice-9/psyntax.scm (%syntax-module): Rename from syntax-module in order to make room for a new syntax-module primitive binding. * module/ice-9/psyntax-pp.scm: Regenerate. * module/ice-9/boot-9.scm: Push syntax bindings into an internal module. * module/system/syntax.scm: New file. * module/Makefile.am (SOURCES): Add system/syntax.scm.
2017-03-23Git ignore .exe filesMike Gran1-0/+1
* .gitignore: add *.exe
2017-03-20i18n: add international sign positions to %locale-dumpMike Gran1-2/+6
* module/ice-9/i18n.scm (%locale-dump): modified
2017-03-20i18n: locale-positive-separated-by-space? should return bool, not stringMike Gran2-4/+21
* libguile/i18n.c (scm_nl_langinfo): unpack INT_P_SEP_BY_SPACE as bool * test-suite/tests/i18n.test (nl-langinfo et al.): new tests
2017-03-20i18n: add debugging helper procedure for localesMike Gran1-1/+67
* module/ice-9/i18n.scm (%locale-dump): new procedure
2017-03-20i18n: add tests for locale-digit-groupingMike Gran1-0/+20
* test-suite/tests/i18n.test ("nl-langinfo et al."): new tests
2017-03-20i18n: add tests for locale AM/PMMike Gran1-0/+20
* test-suite/tests/i18n.test ("nl-langinfo et al."): new tests
2017-03-20i18n: rename locale-monetary-digit-grouping to locale-monetary-groupingMike Gran2-5/+26
* module/ice-9/i18n.scm (locale-monetary-digit-grouping): renamed to locale-monetary grouping (monetary-amount->locale-string): use renamed procedure * test-suite/tests/i18n.test (%french-locale): add LC_MONETARY (%french-utf8-locale): add LC_MONETARY ("nl-langinfo et al."): tests for locale-monetary-grouping
2017-03-17web: Avoid deprecated '_IOFBF'.Ludovic Courtès1-1/+1
* module/web/client.scm (open-socket-for-uri): Use 'block instead of _IOFBF.
2017-03-17web: Remove export of nonexistent 'open-connection-for-uri'.Ludovic Courtès1-2/+1
* module/web/client.scm: Don't export 'open-connection-for-uri', which doesn't exist.
2017-03-15Add generic prebuilt links to dist.v2.2.0Andy Wingo1-0/+5
* prebuilt/Makefile.am (EXTRA_DIST): Add generic prebuilt links.
2017-03-15Update --version and REPL copyright yearsAndy Wingo2-3/+3
* module/ice-9/command-line.scm (version-etc): * module/system/repl/common.scm (*version*): Update release year.
2017-03-15GNU Guile 2.2.0.Andy Wingo1-3/+3
* GUILE-VERSION (GUILE_MINOR_VERSION, GUILE_MICRO_VERSION): Bump. (LIBGUILE_INTERFACE_CURRENT): Incrememt to indicate that we now have a defined libtool ABI "interface" of 1, that we support no other interface (yet), and that this is the 0th revision of that interface.
2017-03-15GUILE_SITE_DIR: Update to find compiled site directoriesFreja Nordsiek2-6/+39
* meta/guile.m4 (GUILE_SITE_DIR): Update to find compiled site directories. * meta/guile-2.2.pc.in: Add entry for site-ccache directory.
2017-03-14Better eval+promise+gc testAndy Wingo1-1/+6
* test-suite/tests/eval.test ("promises"): Increase clear pass rate on this test.
2017-03-14Resolve unresolved alist test casesAndy Wingo1-58/+29
* test-suite/tests/alist.test: Update unresolved cases to match current behavior. Bogus but stable :/
2017-03-14build: Compress with lzip too.Ludovic Courtès1-1/+1
* configure.ac: Add 'dist-lzip' Automake option.
2017-03-14Fixed reversed version order bug in GUILE_PROGS Autoconf macro.Freja Nordsiek1-2/+2
* meta/guile.m4 (GUILE_PROGS): Build version in correct order.
2017-03-14Update NEWSAndy Wingo1-85/+42
* NEWS: Update for 2.2.0.
2017-03-14configure detects which set of prebuilt binaries to useAndy Wingo7-5/+19
* configure.ac: Use detected endianness and word size to automatically select which set of prebuilt binaries to use. * meta/build-env.in (top_builddir): * meta/uninstalled-env.in (top_builddir): Update to use SCM_PREBUILT_BINARIES for prebuilt entry in GUILE_LOAD_COMPILED_PATH. * prebuilt/32-bit-big-endian: * prebuilt/32-bit-little-endian: * prebuilt/64-bit-little-endian: New links. * prebuilt/x86_64-pc-linux-gnu: Remove this link now that it's unneeded.
2017-03-13Nonlocal prompt returns cause all effectsAndy Wingo2-2/+15
* module/language/cps/effects-analysis.scm (expression-effects): Prompts cause &all-effects. I tried to limit this change to CSE but it was actually LICM that was borked, so better to be conservative * test-suite/tests/control.test ("escape-only continuations"): Add test.
2017-03-13Fix finalizer resuscitation causing excessive GCAndy Wingo6-43/+137
* libguile/finalizers.c (async_gc_finalizer): (scm_i_register_async_gc_callback): Replace "weak gc callback" mechanism with "async gc callback" mechanism. Very similar but the new API is designed to be called a bounded number of times, to avoid running afoul of libgc heuristics. * libguile/weak-list.h: New internal header. * libguile/Makefile.am (noinst_HEADERS): Add weak-list.h. * libguile/weak-set.c (vacuum_all_weak_sets): (scm_c_make_weak_set, scm_init_weak_set): * libguile/weak-table.c (vacuum_all_weak_tables): (scm_c_make_weak_table, scm_init_weak_table): Arrange to vacuum all weak sets from a single async GC callback, and likewise for weak tables. Thanks to Ludovic Courtès for tracking this bug down!
2017-03-10Guile 2.1.8.v2.1.8Andy Wingo1-1/+1
* GUILE-VERSION (GUILE_MICRO_VERSION): Bump.
2017-03-10Revert "Fix "Scheme Syntax" info rendering"Andy Wingo1-2/+2
This reverts commit 62f08b8f38990c1849ea61cd622f84b3d2611cd9, which was causing failing texi2dvi runs.
2017-03-10Update NEWSAndy Wingo1-2/+10
* NEWS: Update for 2.1.8.
2017-03-10Fix atomics compilation on clangAndy Wingo1-8/+19
* libguile/atomics-internal.h (scm_atomic_subtract_uint32): (scm_atomic_compare_and_swap_uint32, scm_atomic_set_pointer): (scm_atomic_ref_pointer, scm_atomic_set_scm): (scm_atomic_ref_scm, scm_atomic_swap_scm): (scm_atomic_compare_and_swap_scm): Use C11 atomic types if we have loaded C11 stdatomic.h.
2017-03-09Fix a couple of typos in the docsVladislav Ivanishin2-2/+2
* doc/ref/scheme-ideas.texi: the some way -> the same way * doc/ref/scheme-intro.texi: Use @math inside a texinfo command (turns out $math$ is not processed in this context and thus is not rendered correctly).
2017-03-09VM support for string-set!; slimmer read-stringAndy Wingo7-11/+57
* doc/ref/vm.texi (Inlined Scheme Instructions): Add string-set!. * libguile/vm-engine.c (string-set!): New opcode. * module/ice-9/rdelim.scm (read-string): Reimplement in terms of a geometrically growing list of strings, to reduce total heap usage when reading big files. * module/language/cps/compile-bytecode.scm (compile-function): Add string-set! support. * module/language/cps/types.scm (string-set!): Update for &u64 index. * module/language/tree-il/compile-cps.scm (convert): Unbox index to string-set!. * module/system/vm/assembler.scm (system): Export string-set!.
2017-03-09Micro-optimize update-port-position.Andy Wingo1-3/+5
* libguile/ports.c (update_port_position): Only fetch line if we need to increment it.
2017-03-09Fix bug in comparison between real and complexDaniel Llorens2-6/+17
This bug was introduced by 35a90592501ebde7e7ddbf2486ca9d315e317d09. * module/language/cps/specialize-numbers.scm (specialize-operations): Check that both operands are real as a condition for specialize-f64-comparison. * test-suite/tests/numbers.test: Add test.
2017-03-09Remove contification restriction in case-lambdaAndy Wingo2-31/+12
* module/language/cps/compile-bytecode.scm (compile-function): Check for fallthrough after $kclause too; possible to need to jump if clause tails are contified. * module/language/cps/contification.scm (compute-contification-candidates): Enable inter-clause contification.
2017-03-09All clauses of function have same nlocalsAndy Wingo2-33/+25
* module/language/cps/compile-bytecode.scm (compile-function): * module/language/cps/slot-allocation.scm ($allocation) (lookup-nlocals, compute-frame-size, allocate-slots): Adapt to have one frame size per function, for all clauses.
2017-03-09Adapt gcprof to preemptive interruptsAndy Wingo1-4/+4
* module/statprof.scm (gcprof): Remove handle-interrupts trampoline from captured stacks.
2017-03-09Adapt statprof to new preemptive interruptsAndy Wingo1-2/+4
* module/statprof.scm (profile-signal-handler): Cut an additional stack frame, corresponding to the handle-interrupts trampoline added recently.
2017-03-09statprof: 'with-statprof' honors #:display-style.Ludovic Courtès1-1/+5
* module/statprof.scm (with-statprof): Pass #:display-style to 'statprof'.
2017-03-0864KB segment alignmentAndy Wingo2-4/+50
* module/system/vm/linker.scm (*lcm-page-size*): Rename from *page-size*, change to 64 KB. * libguile/loader.c (load_thunk_from_memory): Only require page size alignment, knowing that although Guile might emit ELF with 64k alignment, it only really needs page alignment.