Michael Gran
d98e1d5e4f
New procedure mkdtemp! to create unique temporary directory
...
* configure.ac (AC_CHECK_FUNCS): add mkdtemp! test
* doc/ref/posix.texi: document mkdtemp!
* libguile/filesys.c (scm_mkdtemp_x): new function
* libguile/filesys.h: new declaration for scm_mkdtemp_x
* test-suite/tests/filesys.test: add tests for mkdtemp!
Adapted from a patch by Rob Browning.
2021-01-19 05:58:14 -08:00
Michael Gran
d60ff39105
Move declaration for scm_mkstemp to filesys.h
...
The underlying function was moved to filesys.c in
073167ef7b
but the declaration didn't follow
* libguile/filesys.h: add declaration for scm_mkstemp
* libguile/posix.h: remove declaration for scm_mkstemp
2021-01-18 08:40:27 -08:00
Rob Browning
d0d1f68794
scm_i_make_transcoded_port: fix mode for input/output ports
...
* libguile/r6rs-ports.c (scm_i_make_transcoded_ports): make sure to
include SCM_RDNG for input/output ports.
Thanks to Göran Weinholt for reporting the problem.
Closes: 41045
2021-01-17 13:25:42 -06:00
Asher Gordon
7a1cd29637
Replace a line which was accidentally removed.
...
The line, part of the sentence above it in a comment, was accidentally
removed in commit b8d757732f
"Rationalize
include order in C files".
* libguile/guile.c: restore missing line.
[rlb@defaultvalue.org: augment commit message; add THANKS]
Closes: 42331
2021-01-17 13:15:58 -06:00
Rob Browning
859cd4eb9b
doc: Fix composition describing scm_reverse_list_to_string
...
* libguile/srfi-13.c (scm_reverse_list_to_string): Replace string->list
with list->string in the composition explaning how it works. Thanks
to Andrey Ivanov for reporting the problem.
Closes: 34457
2021-01-17 13:15:45 -06:00
Andy Wingo
74e69220ea
Merge remote-tracking branch 'lightening/main'
2021-01-07 11:48:30 +01:00
Andy Wingo
64c89458e6
Fix source location bug for neoteric exprs introduced by refactoring
...
* libguile/read.c (scm_read_expression): Ungetc after capturing the
column.
2020-09-10 22:11:34 +02:00
Andy Wingo
e9c5a1719b
Move copy-tree to (ice-9 copy-tree); deprecate main binding
...
* doc/ref/api-data.texi (List Constructors):
* doc/ref/api-utility.texi (Copying): Update docs to mention module.
* libguile.h: Remove trees.h inclusion.
* libguile/Makefile.am (libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES):
(DOT_X_FILES, DOT_DOC_FILES, modinclude_HEADERS): Remove trees.c,
trees.h, and related files.
* libguile/init.c (scm_i_init_guile): Remove trees.h and the
scm_init_trees call.
* libguile/trees.c:
* libguile/trees.h: Remove.
* module/Makefile.am (SOURCES): Add ice-9/copy-tree.scm.
* module/ice-9/copy-tree.scm: New file.
* module/ice-9/deprecated.scm (copy-tree*): Export as copy-tree,
proxying to (ice-9 copy-tree).
* module/system/repl/common.scm:
* module/web/client.scm:
* test-suite/tests/elisp.test:
* test-suite/tests/srfi-1.test:
* module/oop/goops/save.scm: Use (ice-9 copy-tree).
* test-suite/Makefile.am (SCM_TESTS): Add copy-tree.test.
* test-suite/tests/copy-tree.test: New file; test pulled from
eval.test.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_copy_tree): Deprecate.
2020-09-10 21:57:21 +02:00
Andy Wingo
6f6abb3bb5
Clean up srcprops implementation
...
* libguile/deprecated.c (scm_sym_copy, scm_make_srcprops): Deprecate.
* libguile/deprecated.h (scm_tc16_srcprops)
(SCM_SOURCE_PROPERTY_FLAG_BREAK): Deprecate.
* libguile/private-options.h (SCM_COPY_SOURCE_P): Remove.
* libguile/read.c (struct t_read_opts, scm_read_options): Remove useless
copy read option.
(maybe_annotate_source): Change line and column to be tagged, and
subtract off lookahead here. Change all callers.
(READ_OPTION_COPY_SOURCE_P): Remove, renumbering other options.
(init_read_options): Remove copy option.
* libguile/srcprop.c: Change to put filename inline in source
properties. Update private implementation.
* libguile/srcprop.h (SCM_PROCTRACEP): Remove. Unusable given that
scm_sym_trace was undefined.
2020-09-03 22:55:08 +02:00
Andy Wingo
837580587b
Tweak to initial heap size selection
...
* libguile/gc.c (DEFAULT_INITIAL_HEAP_SIZE): Bump a bit farther (2 MB on
64-bit, 1 MB on 32-bit) as we now expand to this size instead of
expanding by this amount.
(scm_storage_prehistory): Expand to the initial heap size instead of
expanding by the size.
2020-08-27 14:18:44 +02:00
Andy Wingo
fdea77d01c
Bump DEFAULT_INITIAL_HEAP_SIZE
...
* libguile/gc.c (DEFAULT_INITIAL_HEAP_SIZE): Bump to 1.6 MB on 64-bit
targets, or 800 kB on 32-bit targets, to account for increased
footprint. Prevents useless early GC.
(scm_storage_prehistory): Remove unused code to dynamically change the
free space divisor.
2020-08-27 14:07:01 +02:00
Andy Wingo
c8c67eba91
Bump objcode minor version to 4
...
* libguile/loader.h (SCM_OBJCODE_MINOR_VERSION): Accept up to version 4.
* module/system/vm/assembler.scm (*bytecode-minor-version*): Produce
version 4.
2020-08-26 21:46:42 +02:00
Andy Wingo
03998db647
Add new pass to optimize branch chains to table dispatch
...
* module/language/cps/switch.scm: New pass.
* module/Makefile.am (SOURCES):
* am/bootstrap.am (SOURCES): Add switch.scm.
* module/system/base/optimize.scm (available-optimizations):
* module/language/cps/optimize.scm (optimize-first-order-cps): Run
switch optimization at level 2.
* libguile/hash.c (JENKINS_LOOKUP3_HASHWORD2): Add note regarding
cross-compilation.
* module/language/cps/graphs.scm (intmap-select): New definition.
* module/language/cps/utils.scm (compute-singly-referenced-labels): Move
here, from various places. Doesn't take a body intset argument.
* module/language/cps/contification.scm:
* module/language/cps/closure-conversion.scm:
* module/language/cps/simplify.scm: Use compute-singly-referenced-labels
from utils.
* module/language/cps/effects-analysis.scm (annotation->memory-kind*):
(annotation->memory-kind): Add symbol annotation cases.
2020-08-12 23:30:08 +02:00
Andy Wingo
feafad7958
Fix JIT compilation for jtable
...
* libguile/jit.c (compile_jtable): Fix bounds check for index.
2020-08-12 23:30:08 +02:00
Andy Wingo
8366634db7
Add eq-immediate? instruction
...
* libguile/jit.c (compile_eq_immediate, compile_eq_immediate_slow): Add
JIT compiler.
* libguile/vm-engine.c (eq_immediate): New instruction.
* doc/ref/vm.texi (Comparison Instructions): Document.
* module/system/vm/assembler.scm (encode-X8_S8_ZI16!/shuffle): New
shuffler.
* module/system/vm/disassembler.scm (code-annotation): Add eq-immediate?
case.
2020-08-03 22:19:12 +02:00
Andy Wingo
172e5ccfc1
Add sign-extending make-immediate instruction
...
* doc/ref/vm.texi (Instruction Set, Constant Instructions): Document new
instruction.
* libguile/instructions.c (FOR_EACH_INSTRUCTION_WORD_TYPE): New first
word kind with zi16 operand.
* libguile/jit.c (compile_make_immediate, compile_make_immediate_slow):
New compilers.
(COMPILE_X8_S8_ZI16): New operand kind.
* libguile/vm-engine.c (make-immediate): New instruction.
* module/language/bytecode.scm:
* module/system/vm/assembler.scm (encode-X8_S8_ZI16<-/shuffle):
(signed-bits, load-constant): Support the new instruction kind.
* module/system/vm/disassembler.scm (disassemblers)
(sign-extended-immediate, code-annotation): Support for zi16
operands.
2020-07-30 17:36:11 +02:00
Andy Wingo
aa44a71750
Merge https://gitlab.com/wingo/lightening master branch
2020-07-30 14:34:52 +02:00
Andy Wingo
2aa05ff3c4
Update use of jit_begin_data API
...
* libguile/jit.c (compile_jtable): Pass computed jump table size.
2020-07-30 14:12:26 +02:00
Andy Wingo
d4e730a458
Merge https://gitlab.com/wingo/lightening master branch
2020-07-30 14:11:26 +02:00
Andy Wingo
5342eb542f
Add JIT implementation for jtable
...
* libguile/jit.c (compile_jtable): Implement.
2020-07-30 13:26:12 +02:00
Andy Wingo
439e93a5ed
Merge https://gitlab.com/wingo/lightening master branch
2020-07-30 13:07:02 +02:00
Andy Wingo
bb7fa5bdc2
Add jtable instruction
...
* doc/ref/vm.texi (Instruction Set): Document new v32-x8-l24 instruction
kind.
(Branch Instructions): Document jtable.
* libguile/instructions.c (FOR_EACH_INSTRUCTION_WORD_TYPE): Add
V32_X8_L24.
* libguile/jit.c (compile_jtable, compile_jtable_slow):
(COMPILE_X8_S24__V32_X8_L24, analyze): Add stub JIT compiler
implementation.
* libguile/vm-engine.c (jtable): New instruction.
* module/language/bytecode.scm (instruction-arity): Deprecate.
* module/system/vm/assembler.scm (encoder, assembler): Add V32_X8_L24
case.
* module/system/vm/disassembler.scm (u32-ref, s32-ref): Move definitions
to expansion-time only.
(define-op-handlers): New definition, replacing visit-opcodes.
(disassemblers, jump-parsers, stack-effect-parsers, clobber-parsers):
Rework in terms of define-op-handlers. Default case becomes #f, and
add support for jtable.
(disassemble-one, instruction-relative-jump-targets)
(instruction-stack-size-after, instruction-slot-clobbers): Inline
default case in the lookup procedure, not copied in the handler
vector.
(compute-labels): Add jtable case.
(instruction-lengths-vector, instruction-length): Rework to allow
variable-length instructions, and mark jtable as being
variable-length.
(instruction-has-fallthrough?): Add jtable to the no-fallthrough
set.
2020-07-23 12:24:11 +02:00
Ludovic Courtès
7e814190e3
Merge upstream 'lightening'
...
* libguile/lightening: Merge from https://gitlab.com/wingo/lightening ,
commit 24ef197b12
.
2020-06-21 15:04:32 +02:00
Andy Wingo
52baa45d40
Merge upstream 'lightening'
...
* libguile/lightening: Merge from https://gitlab.com/wingo/lightening .
2020-06-19 16:30:59 +02:00
Andy Wingo
85d2766aa4
Merge upstream 'lightening'
...
* libguile/lightening: Merge from https://gitlab.com/wingo/lightening .
2020-06-19 16:26:53 +02:00
Arun Isaac
67f5b451b0
doc: Document default delimiter of string-join.
...
* doc/ref/api-data.texi (String Constructors): Document default
delimiter of the string-join function.
* libguile/srfi-13.c (scm_string_join): Adjust docstring accordingly.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-06-18 00:30:30 +02:00
Jan (janneke) Nieuwenhuizen
52809cc630
read: Use "invalid" rather than "illegal".
...
* libguile/read.c (scm_read_string_like_syntax): All characters are
permitted by law; some aren't valid in certain contexts.
* test-suite/tests/reader.test: Replace occurrences of "illegal" by
"invalid".
* test-suite/tests/strings.test: Likewise.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-06-18 00:30:11 +02:00
Ludovic Courtès
a15acbb828
srfi-1: Rewrite 'assoc' in Scheme.
...
* libguile/srfi-1.c (scm_srfi1_assoc): Remove.
* libguile/srfi-1.h (scm_srfi1_assoc): Likewise.
* module/srfi/srfi-1.scm (assoc): New procedure.
2020-06-17 17:59:35 +02:00
Ludovic Courtès
cd4c747fb8
srfi-1: Rewrite 'find-tail' in Scheme.
...
* libguile/srfi-1.c (scm_srfi1_find_tail): Remove.
* libguile/srfi-1.h (scm_srfi1_find_tail): Likewise.
* module/srfi/srfi-1.scm (find-tail): New procedure.
2020-06-17 17:33:28 +02:00
Ludovic Courtès
0360843ace
srfi-1: Rewrite 'find' in Scheme.
...
This halves the wall-clock time of:
guile -c '(use-modules (srfi srfi-1)) (define lst (make-list 100000000 1)) (find zero? lst)'
and yields an 18% speedup on:
guile -c '(use-modules (srfi srfi-1)) (define lst (make-list 100000000 1)) (find (lambda (x) (= 2 x)) lst)'
* libguile/srfi-1.c (scm_srfi1_find): Remove.
* libguile/srfi-1.h (scm_srfi1_find): Likewise.
* module/srfi/srfi-1.scm (find): New procedure.
* doc/ref/srfi-modules.texi (SRFI-1 Searching): Adjust docstring.
2020-06-17 17:25:23 +02:00
Andy Wingo
3c3270491e
Update lightening
...
* libguile/lightening: Merge gitlab.com/wingo/lightening/ from
3260f7deeb
.
2020-06-12 16:17:29 +02:00
Daniel Llorens
4677c12803
Fix cast enabling SCM_DEBUG_TYPING_STRICTNESS 2
2020-05-28 17:04:14 +02:00
Ludovic Courtès
9c03e44dcf
doc: Rephrase documentation of 'thunk?'.
...
Fixes <https://bugs.gnu.org/41353 >.
Reported by Jan Synacek <jsynacek@redhat.com>.
* doc/ref/api-procedures.texi (Procedure Properties): Rephrase
documentation of 'thunk?'.
* libguile/procs.c (scm_thunk_p): Likewise.
2020-05-27 22:34:49 +02:00
Rutger van Beusekom
786fbcd327
popen: Add 'pipeline' procedure.
...
* libguile/posix.c (scm_open_process): Remove.
(scm_piped_process): Add to replace open_process.
* module/ice-9/popen.scm (pipe->fdes): Add to convert pipe pair to fdes pair.
(open-process): Add open-process for backwards compatibility.
(pipeline): Add to implement a pipeline using piped-process.
* doc/ref/posix.texi (Pipes): Document it.
* test-suite/tests/popen.test ("open-process")
("piped-process", "piped-process: with output")
("pipeline"): New tests.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-05-16 22:36:19 +02:00
Andy Wingo
c6636ff312
Bump objcode minor version
...
* libguile/loader.h (SCM_OBJCODE_MINOR_VERSION):
* module/system/vm/assembler.scm (*bytecode-minor-version*): Bump, so
that compiled files from Guile 3.0.3 will error when loaded on 3.0.2.
2020-05-13 09:37:54 +02:00
Ludovic Courtès
b1bdd791ce
Zero the initial file port revealed count.
...
Fixes <https://bugs.gnu.org/41204 >.
Reported by Caleb Ristvedt <caleb.ristvedt@cune.org>.
Until now, Guile would leak the file descriptors of all the file ports
not explicitly closed.
* libguile/fports.c (scm_i_fdes_to_port): Initialize fp->revealed.
* test-suite/tests/ports.test ("initial revealed count")
("non-revealed port is closed"): New tests.
("close-port & revealed port"): Check (port-revealed port).
("revealed port fdes not closed"): Likewise.
2020-05-12 14:58:30 +02:00
Andy Wingo
35160ade03
Reload FP if needed in bind-rest also
...
* libguile/jit.c (compile_bind_rest): Reload FP if needed
2020-05-11 14:41:44 +02:00
Andy Wingo
1563f5e042
Fix JIT asserts with different code generated by baseline
...
* libguile/jit.c (UNREACHABLE): New register state.
(unreachable): New predicate.
(ASSERT_HAS_REGISTER_STATE): Succeed when unreachable.
(compile_throw, compile_throw_value, compile_throw_value_and_data):
Set unreachable flag.
(compile_receive_values): Reload FP if needed.
2020-05-11 14:34:35 +02:00
Andy Wingo
4274d615cc
Add new lookup, lookup-bound intrinsics
...
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS):
* libguile/intrinsics.c (lookup, lookup_bound):
* libguile/intrinsics.c (scm_bootstrap_intrinsics): New intrinsics.
* module/language/cps/reify-primitives.scm (reify-primitives):
* module/language/cps/effects-analysis.scm (current-module):
* module/language/cps/compile-bytecode.scm (compile-function):
* module/system/vm/assembler.scm: Add compiler support.
2020-05-11 10:22:34 +02:00
Andy Wingo
d6b6392cfb
Rename "lookup" intrinsic to "module-variable"
...
It can return #f, unlike scm_(module_)?lookup.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS):
* libguile/intrinsics.c (module_variable, scm_bootstrap_intrinsics):
Rename.
* module/language/cps/compile-bytecode.scm (compile-function):
* module/language/cps/effects-analysis.scm (current-module):
* module/language/cps/reify-primitives.scm (reify-lookup)
(compute-known-primitives):
* module/language/tree-il/compile-bytecode.scm (emit-cached-module-box)
(emit-cached-toplevel-box, emit-toplevel-box):
* module/language/tree-il/compile-cps.scm (toplevel-box):
* module/system/vm/assembler.scm (module-variable): Adapt users.
2020-05-11 09:46:40 +02:00
Andy Wingo
d6b6daca37
Add intrinsics for a baseline compiler
...
Since there's no optimization in the baseline compiler, there's no sense
in instruction explosion.
* libguile/intrinsics.h:
* libguile/intrinsics.c ($car, $cdr, $set-car!, $set-cdr!,
$variable-ref, $variable-set!, $vector-length, $vector-ref,
$vector-set!, $vector-ref/immediate, $vector-set!, $allocate-struct,
$struct-vtable, $struct-ref, $struct-set! $struct-ref/immediate,
$struct-set!): New intrinsics.
* libguile/jit.c (compile_call_scm_scm, compile_call_scm_scm_slow)
(compile_call_scm_scm_scm, compile_call_scm_scm_scm_slow)
(compile_call_scm_uimm_scm, compile_call_scm_uimm_scm_slow): New
code generators.
* libguile/vm-engine.c (call-scm-scm, call-scm-scm-scm,
call-scm-uimm-scm): New instructions.
* module/system/vm/assembler.scm (emit-null?, emit-false?, emit-nil?):
Export these. Also export emitters for the new intrinsics.
(define-scm-scm-intrinsic, define-scm-uimm-scm-intrinsic)
(define-scm-scm-scm-intrinsic): New helpers.
* doc/ref/vm.texi (Intrinsic Call Instructions): Add new instructions.
2020-04-29 21:47:37 +02:00
Andy Wingo
607183679e
Deprecate scm_bitvector, scm_make_bitvector, scm_bitvector_p
...
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/bitvectors.h:
* libguile/bitvectors.c:
* libguile/deprecated.c:
* libguile/deprecated.h: Deprecate scm_bitvector, scm_make_bitvector,
and scm_bitvector_p.
* libguile/read.c (scm_read_guile_bit_vector): Use scm_list_to_bitvector
instead of scm_bitvector.
2020-04-29 11:14:17 +02:00
Andy Wingo
8861af39ae
Prefer C-like interfaces for scm_c_bitvector_{set,clear}_bits_x
...
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_set_bits_x)
(scm_c_bitvector_clear_bits_x): Expose only C-like interfaces. No
need to have a SCM_UNDEFINED return.
* libguile/deprecated.c (scm_bit_set_star_x): Adapt.
* doc/ref/api-data.texi (Bit Vectors): Update.
2020-04-29 11:14:17 +02:00
Andy Wingo
b517a91ba4
Deprecate useless C bitvector interface
...
C should use scm_c_bitvector_length, not scm_bitvector_length.
* doc/ref/api-data.texi (Bit Vectors): Reorganize a bit to put typed C
interfaces in their own section.
* libguile/bitvectors.h:
* libguile/bitvectors.c (bitvector-length, bitvector-count): Make
SCM-flavored C interface private.
(scm_c_bitvector_count): New function.
* libguile/deprecated.c (scm_bitvector_length): Deprecate.
(scm_bit_count): Adapt to changes.
2020-04-29 11:14:17 +02:00
Andy Wingo
bfd38b8577
bitvector-count-bits replaces bit-count*
...
* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_count_bits): New function.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bit_count_star): Deprecate.
* module/ice-9/sandbox.scm (bitvector-bindings): Replace bit-count* with
bitvector-count-bits.
* test-suite/tests/bitvectors.test: Update.
2020-04-29 11:14:17 +02:00
Ludovic Courtès
1fbe89f7bd
'finalization_thread_proc' sets errno before calling 'perror'.
...
* libguile/finalizers.c (finalization_thread_proc): Set 'errno' before
calling 'perror'.
2020-04-26 16:30:31 +02:00
Andy Wingo
f897efa9f1
bitvector-flip-all-bits! replaces bit-invert!
...
* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_flip_all_bits_x): New function.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bit_invert_x): Deprecate.
* module/ice-9/sandbox.scm (mutable-bitvector-bindings): Replace
bit-invert! with bitvector-flip-all-bits!.
* module/system/vm/frame.scm (available-bindings): Use the new
interface.
* test-suite/tests/bitvectors.test: Update.
2020-04-18 22:16:31 +02:00
Andy Wingo
d7fea13453
bitvector-set-all-bits! / bitvector-clear-all-bits! replace bitvector-fill!
...
* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_set_all_bits_x)
(scm_c_bitvector_clear_all_bits_x): New functions.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bitvector_fill_x): Deprecate.
* module/ice-9/sandbox.scm (mutable-bitvector-bindings): Replace
bitvector-fill! with bitvector-set-all-bits! /
bitvector-clear-all-bits!.
* module/system/vm/disassembler.scm (static-opcode-set): Use
bitvector-set-bit!.
* module/system/vm/frame.scm (available-bindings): Use the new
interfaces.
* test-suite/tests/bitvectors.test: Update.
2020-04-15 22:14:25 +02:00
Andy Wingo
8110061e64
bitvector-set-bit! / bitvector-clear-bit! replace bitvector-set!
...
* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/array-handle.h (bitvector_set_x, scm_array_get_handle): Adapt
to bitvector changes.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_set_bit_x)
(scm_c_bitvector_clear_bit_x): New functions.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bitvector_set_x): Deprecate.
* module/ice-9/sandbox.scm (mutable-bitvector-bindings): Replace
bitvector-set! with bitvector-set-bit! / bitvector-clear-bit!.
* module/system/vm/disassembler.scm (static-opcode-set): Use
bitvector-set-bit!.
* module/system/vm/frame.scm (compute-defs-by-slot, available-bindings):
Use bitvector-set-bit!.
* test-suite/tests/bitvectors.test: Update.
2020-04-14 22:40:43 +02:00
Andy Wingo
d804177be4
bitvector-bit-set? / bitvector-bit-clear? replace bitvector-ref
...
This is an opportunity to make a new interface that can be more
efficient in 3.0 (because no generic array support), easier to read (no
need for 'not'), and more consistent with other bitvector interfaces.
* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/array-handle.h (bitvector_ref, scm_array_get_handle): Adapt
to bitvector changes.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_bit_is_set)
(scm_c_bitvector_bit_is_clear): New functions.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bitvector_ref): Deprecate.
* module/ice-9/sandbox.scm (bitvector-bindings): Replace
bitvector-ref with bitvector-bit-set? / bitvector-bit-clear?.
* module/system/vm/disassembler.scm (instruction-has-fallthrough): Use
bitvector-bit-clear?.
* test-suite/tests/bitvectors.test: Update.
2020-04-14 22:18:02 +02:00