1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-16 10:40:19 +02:00
Commit graph

12610 commits

Author SHA1 Message Date
Daniel Kraft
9b5ff6a6e1 Implemented real quotation (added support for backquotation).
* module/language/elisp/README: Document that.
* module/language/elisp/compile-tree-il.scm: Implement backquote.
* test-suite/tests/elisp-compiler.test: Test quotation and backquotes.
2009-07-18 17:32:59 +02:00
Daniel Kraft
e905e490fa Implemented eq and equal built-in predicates.
* module/language/elisp/runtime/function-slot.scm: Implement eq and equal.
* test-suite/tests/elisp-compiler.test: Test them.
2009-07-18 17:21:55 +02:00
Daniel Kraft
74c009dadc Implemented macros in elisp compiler.
* module/language/elisp/README: Document it.
* module/language/elisp/compile-tree-il.scm: Implement defmacro and expansion.
* module/language/elisp/runtime/macro-slot.scm: New module to keep definitions.
* test-suite/Makefile.am: Add elisp-compiler.test to list of tests.
* test-suite/tests/elisp-compiler.test: Basic macro tests.
2009-07-16 15:23:38 +02:00
Daniel Kraft
b6b9d59604 Extended test-suite to cover already implemented built-ins and fixed errors found.
* module/language/elisp/runtime/function-slot.scm: Fixed errors in number preds.
* test-suite/tests/elisp-compiler.test: Test built-ins already implemented.
2009-07-16 14:28:07 +02:00
Ludovic Courtès
3b0b6bc1dd Bump version number for 1.9.1.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
2009-07-15 23:57:18 +02:00
Ludovic Courtès
10331eac7e Make the non-integrated VM test-suite less verbose.
* testsuite/run-vm-tests.scm (run-vm-tests): Don't display the number of
  tests passed since it's always 1 or 0.
2009-07-15 23:56:27 +02:00
Ludovic Courtès
ec99fe8ecb Add FIXMEs about misaligned objcode-metas.
* libguile/objcodes.c (scm_c_make_objcode_slice): Add comment about
  misaligned `objcode-meta'.

* module/language/assembly/compile-bytecode.scm (write-bytecode):
  Likewise.
2009-07-15 23:53:22 +02:00
Ludovic Courtès
5bd047cefa Fix unaligned access in the VM code.
* libguile/vm.c (struct t_32bit_aligned): New.
  (really_make_boot_program)[bytes]: Use it.  This fixes possibly
  unaligned accesses, which cause a "bus error" on some platforms (e.g.,
  sparc-*).
2009-07-15 23:51:42 +02:00
Ludovic Courtès
b67cb2864e Const-qualify buffers passed to `scm_c_make_objcode_slice ()'.
* libguile/objcodes.c (scm_c_make_objcode_slice): Add `const' qualifier
  for PTR and DATA.

* libguile/objcodes.h: Update accordingly.
2009-07-15 23:12:43 +02:00
Ludovic Courtès
e1203ea00f Switch remaining GPLv2+ Guile-VM headers to LGPLv3+.
* module/system/base/compile.scm, module/system/base/syntax.scm,
  module/system/repl/common.scm, module/system/repl/describe.scm,
  module/system/vm/instruction.scm, module/system/vm/objcode.scm,
  module/system/vm/profile.scm, module/system/vm/program.scm,
  module/system/vm/trace.scm: Switch header from GPLv2+ to LGPLv3+.
2009-07-15 22:46:54 +02:00
Daniel Kraft
d158fa62ab Test-suite for elisp compiler so far, excluding the built-ins.
* test-suite/tests/elisp-compiler.test: Tests for compiler so far.
2009-07-15 22:08:36 +02:00
Daniel Kraft
09241ea7f7 Removed wrong not in zerop built-in.
* module/language/elisp/runtime/function-slot.scm: Fix zerop.
2009-07-15 13:51:19 +02:00
Ludovic Courtès
a823e7272e Fix typo in the compile-type verification of `OBJCODE_COOKIE'.
* libguile/objcodes.c: Fix `sizeof (OBJCODE_COOKIE)' assertion: the
  trailing 0 must not be taken into account, and multiple of 8 means the
  3 LSBs are clear.
2009-07-15 01:17:32 +02:00
Ludovic Courtès
07f99e1c6a Make sure at compile-time that `OBJCODE_COOKIE' has the right size.
* libguile/objcodes.c: Use `verify' to assert that the size of
  `OBJCODE_COOKIE' is a multiple of 8.
2009-07-15 01:03:35 +02:00
Ludovic Courtès
99c7d3caf6 Explicitly use Gnulib's `verify' module.
* m4/gnulib-cache.m4: Add `verify'.
2009-07-15 00:58:01 +02:00
Ludovic Courtès
9e1a18db9f Augment `OBJCODE_COOKIE' to detect wrong endianness or word size.
* libguile/objcodes.c (OBJCODE_ENDIANNESS, _OBJCODE_STRINGIFY,
  OBJCODE_STRINGIFY, OBJCODE_WORD_SIZE): New macros.
  (OBJCODE_COOKIE): Use them.  The intent is that `.go' files compiled
  for a different endianness or word size are detected.
2009-07-15 00:55:33 +02:00
Ludovic Courtès
ba4c43dc3b Remove the long_long' and ulong_long' types.
* libguile/gen-scmconfig.c (main): Don't emit typedefs for `long_long'
  and `ulong_long'.  This was already deprecated in 1.8 and known to
  cause conflicts with other libraries such as HDF5, as reported by Mark
  Patterson <mpatterson@physics.queensu.ca>
  (http://lists.gnu.org/archive/html/bug-guile/2009-02/msg00003.html).
2009-07-15 00:32:25 +02:00
Andy Wingo
19fef497f0 update NEWS
* NEWS: Update.
2009-07-14 22:55:35 +02:00
Andy Wingo
ef283979cf NEWS has info on 1.9.N to 1.9.N+1 in addition to 1.8 to 2.0
* NEWS: Update to have an incremental section in addition to a
  comprehensive 1.8->2.0 section.
2009-07-14 21:40:43 +02:00
Andy Wingo
ad47e35939 fix race in which some instruction name symbols could go unmarked
* libguile/instructions.c: In loops, replace scm_op_last with
  SCM_VM_NUM_INSTRUCTIONS.
  (fetch_instruction_table): Protect the instruction symbols from
  collection. Before they were only marked by the name->opcode hash
  table, leading to races in which they could be collected.
  (scm_lookup_instruction_by_name): Protect the hash table earlier, as
  it's not actually a stack variable, since it's static.
2009-07-14 21:29:41 +02:00
Andy Wingo
cec1d4e33f fix bounds checks for the last element of bv-*-{ref,set}
* libguile/vm-i-scheme.c (BV_FIXABLE_INT_REF, BV_INT_REF):
  (BV_FLOAT_REF, BV_FIXABLE_INT_SET, BV_INT_SET, BV_FLOAT_SET): Fix the
  bounds check for the last element.
2009-07-14 21:29:29 +02:00
Daniel Kraft
de9f26b5f0 Implemented defconst, defvar, defun special forms for elisp.
* module/language/elisp/README: Document this.
* module/language/elisp/compile-tree-il.scm: Implement defconst/defvar/defun.
2009-07-14 21:18:07 +02:00
Daniel Kraft
285277590d Merge branch 'master' of git://git.savannah.gnu.org/guile into elisp 2009-07-14 20:20:03 +02:00
Ludovic Courtès
d10c572e38 Remove potential "uninitialized variable" GCC warnings.
* libguile/vm-i-scheme.c (vector_ref, vector_set, BV_FIXABLE_INT_REF,
  BV_INT_REF, BV_FLOAT_REF, BV_FIXABLE_INT_SET, BV_INT_SET,
  BV_FLOAT_SET): Explicitly initialize all locals, to make some versions
  of GCC happier.  Patch by Dale P. Smith <dsmich@roadrunner.com>.
2009-07-14 17:12:04 +02:00
Ludovic Courtès
44362a1086 Fix tests that assumed little endian.
* test-suite/tests/asm-to-bytecode.test (u32->u8-list): New procedure.
  ("compiler")[(load-program 3 2 1 0 () 3 #f (make-int8 3) (return)),
  (load-program 3 2 1 0 () 3 (load-program 3 2 1 0 ...))]: Make these
  tests work on hosts whose endianness is not little endian.
2009-07-14 16:07:13 +02:00
Daniel Kraft
1e018f6c67 Some bug fixes on the way and mainly implemented some built-ins (arithmetic).
* module/language/elisp/README: Document changes.
* module/language/elisp/compile-tree-il.scm: Bug fixes to fluid-creation.
* module/language/elisp/runtime.scm: Some helping definitions for built-ins.
* module/language/elisp/runtime/function-slot.scm: Defined artihmetic built-ins.
2009-07-13 18:35:57 +02:00
Daniel Kraft
f28de79197 Automatically create fluids when necessary.
* module/language/elisp/README: Document that.
* module/language/elisp/compile-tree-il.scm: Create fluids when necessary.
* module/language/elisp/runtime/function-slot.scm: Fix module name.
2009-07-13 17:26:07 +02:00
Daniel Kraft
cef997e82a Fixed lambda expressions and implemented function calls using the basic list notation.
* module/language/elisp/README: Document that.
* module/language/elisp/compile-tree-il.scm: Implement function calls.
2009-07-13 16:51:05 +02:00
Daniel Kraft
fad9b2dc53 Merge branch 'master' of git://git.savannah.gnu.org/guile into elisp 2009-07-13 15:46:46 +02:00
Daniel Kraft
50abfe7649 Lambda expressions in elisp, but not yet function calls.
* module/language/elisp/README: Document this.
* module/language/elisp/compile-tree-il.scm: Implement lambda expressions.
2009-07-13 15:43:53 +02:00
Daniel Kraft
3a4b86357e Implemented let and let* in elisp.
* module/language/elisp/README: Document it.
* module/language/elisp/compile-tree-il.scm: Implement let and let*.
2009-07-07 19:38:25 +02:00
Daniel Kraft
d221c18bc0 Implemented while construct in elisp.
* module/language/elisp/README: Document this.
* module/language/elisp/compile-tree-il.scm: Implement while construct.
2009-07-07 17:26:22 +02:00
Ludovic Courtès
c4b681fdac Use Gnulib's `vsnprintf' module.
* m4/gnulib-cache.m4: Use `vsnprintf', needed by `deprecation.c'.
2009-07-05 23:57:37 +02:00
Ludovic Courtès
5374ec9c28 Update `NEWS'.
* NEWS: Update.
2009-07-05 23:46:36 +02:00
Ludovic Courtès
9120012f74 Enclose `bit-operations.test' in its own module.
* test-suite/tests/bit-operations.test: Use the `define-module' clause.
2009-07-05 23:46:34 +02:00
Ludovic Courtès
345b17e911 Fix the `BUILD_PTHREAD_SUPPORT' Automake conditional when not using pthread.
* configure.in: Set $build_pthread_support to "no" when thread support
  isn't built.  This fixes the `BUILD_PTHREAD_SUPPORT' Automake
  conditional.
2009-07-05 23:42:02 +02:00
Daniel Kraft
9d09e928cd Merge branch 'master' of git://git.savannah.gnu.org/guile into elisp 2009-07-04 11:09:38 +02:00
Daniel Kraft
344927c3f8 Implemented fluid-based variable references and setting using setq.
* module/language/elisp/README: Document this.
* module/language/elisp/compile-tree-il.scm: Implement variable references, setq
* module/language/elisp/runtime.scm: New file for runtime definitions.
* module/language/elisp/runtime/function-slot.scm: Ditto.
* module/language/elisp/runtime/value-slot.scm: Ditto.
2009-07-03 23:00:12 +02:00
Andy Wingo
7c957b8657 fix error message for bad objcode cookie
* libguile/objcodes.c: Whoop-dee :)
2009-07-02 21:55:28 +02:00
Daniel Kraft
fdfb36de84 Implemented elisp's or form.
* module/language/elisp/README: Document this.
* module/language/elisp/compile-tree-il.scm: Implement or.
2009-07-02 21:22:25 +02:00
Daniel Kraft
a431673924 For elisp's (cond ...) and (condition) forms without body, return the condition as value.
* compile-tree-il.scm: Fix compilation of (cond ...) for bodyless conditions.
2009-07-02 21:10:38 +02:00
Neil Jerram
40f892156a Read complex numbers where both parts are inexact decimals
Thanks to Bill Schottstaedt for reporting this problem!

* libguile/numbers.c (mem2ureal): Don't be misled by *p_exactness
  being INEXACT on entry (as is possible when reading a complex
  number): use local exactness variable x which starts as EXACT.
  Call mem2decimal_from_point () with &x instead of p_exactness.

* test-suite/tests/numbers.test ("string->number"): Add complex number
  tests suggested by Bill.
2009-07-01 19:43:55 +01:00
Neil Jerram
dd57ddd5ed Correction to doc on Accessing Arrays from C
Thanks to Ludovic for the new wording!

* doc/ref/api-compound.texi (Accessing Arrays from C): Correct text to
  reflect the current implementation of scm_array_get_handle and
  scm_array_handle_release - which don't actuall do any dynwind stuff.
2009-06-30 23:58:16 +01:00
Daniel Kraft
4530432e01 Added make-nil instruction to VM and use it for Emacs' nil in the compiler.
* doc/ref/vm.texi: Document new instruction.
* libguile/vm-i-system.c: Add it to the VM.
* module/language/assembly.scm: Compile (const %nil) to (make-nil) assembly.
* module/language/glil/decompile-assembly.scm: Handle (make-nil)
* module/language/elisp/compile-tree-il.scm: Use (const %nil) for nil.
2009-06-29 13:16:27 +02:00
Ludovic Courtès
0a94eb002e Remove seek/truncate shortcuts to file ports.
Suggested by Neil.

* libguile/fports.c (fport_seek_or_seek64): Rename to `fport_seek ()'.
  (fport_seek, scm_i_fport_seek, scm_i_fport_truncate): Remove.

* libguile/fports.h (scm_i_fport_seek, scm_i_fport_truncate): Remove
  declarations.

* libguile/ports.c (scm_seek): Remove shortcut that would call out to
  `scm_i_fport_seek ()'.
  (scm_truncate_file): Likewise.
2009-06-28 23:33:17 +02:00
Daniel Kraft
46abd569d5 Merge branch 'master' of git://git.savannah.gnu.org/guile into elisp 2009-06-27 20:07:11 +02:00
Andy Wingo
39141c876b bytevector ops now compile down to low-level VM ops
* libguile/instructions.c (scm_instruction_list): Fix a longstanding bug
  in this humble function.

* libguile/vm-i-scheme.c (BV_FIXABLE_INT_SET, BV_INT_SET, BV_FLOAT_SET):
  Fix some bugs in these macros -- now the bytevector ops work.

* module/language/tree-il/compile-glil.scm (*primcall-ops*): Compile
  bytevector calls to VM ops.

* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Resolve bytevector calls to primitive
  calls.
2009-06-26 12:42:10 +02:00
Andy Wingo
a98f422ed6 run bytevectors tests under the compiler and evaluator
* test-suite/tests/bytevectors.test: Run a number of tests under the
  compiler/vm and the evaluator.
2009-06-26 12:42:10 +02:00
Andy Wingo
d6f1ce3d16 vector-ref and vector-set! now have opcodes
* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Resolve vector-ref and vector-set!.

* module/language/tree-il/compile-glil.scm (*primcall-ops*): And compile
  vector-ref and vector-set! to their opcodes.

* libguile/vm-i-scheme.c (vector-ref, vector-set): New opcodes, placed
  before the bytevector ops. The renumbering shouldn't affect anyone,
  given that the bytevector ops were not yet used. Fix a few bugs in the
  bytevector ops.
2009-06-26 12:42:10 +02:00
Andy Wingo
e6eb246716 add bytevector ops to the vm
* libguile/instructions.h (SCM_VM_NUM_INSTRUCTIONS): Enlarge to 255. Not
  sure what performance effects this will have.

* libguile/vm-engine.c: Add new error case, vm_error_not_a_bytevector.

* libguile/vm-engine.h: Don't assign specific registers for i386. Having
  added the new VM vector ops, GCC 4.4 is erroring for me now.

* libguile/vm-i-scheme.c: Add bytevector-specific ops to the VM.
  We don't actually use them yet, though.
2009-06-26 12:42:10 +02:00