1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 04:15:36 +02:00
Commit graph

11318 commits

Author SHA1 Message Date
Ludovic Courtès
8370b00b41 doc: Correct the default value of `%load-path'.
* doc/ref/api-options.texi (Build Config): Remove "." from the default value
  of `%load-path'.  Reported by David Séverin <david@altosw.be>.
2008-09-12 11:31:48 +02:00
Ludovic Courtès
3c2a5013de Include <config.h> in `discouraged.c'.
* libguile/discouraged.c: Include <config.h> first so that files that
  rely on `config.h' macros (such as Gnulib-provided headers) work as
  expected.
2008-09-12 09:41:54 +02:00
Ludovic Courtès
85ca88c68b Remove `.cvsignore' files. 2008-09-11 21:28:21 +02:00
Ludovic Courtès
ac47b09afa Use Gnulib's `autobuild' module.
* m4/gnulib-cache.m4 (gl_MODULES): Add `autobuild'.

* Makefile.am (EXTRA_DIST): Add `m4/autobuild.m4'.
2008-09-11 21:27:45 +02:00
Han-Wen Nienhuys
b71c8ec90a Revise GC asserts.
* libguile/gc.c (scm_i_gc): Change assert into printed warning.

* libguile/private-gc.h (nil): introduce scm_i_last_marked_cell_count,
  as a private mechanism for maintaining cell counts.  Remove variable
  scm_cells_allocated.
2008-09-11 12:10:58 -03:00
Han-Wen Nienhuys
b48efb55b0 * HACKING: update to current practice
* Drop CVS references.

  * Ask for Git based patches.

  * Drop outdated info (EGCS, SCM_P)
2008-09-11 03:35:44 -03:00
Ludovic Courtès
c5cd474d8c Fix compilation of `libguile-i18n' on MinGW.
* libguile/locale-categories.h (MESSAGES): Enclose in `#ifdef LC_MESSAGES' as
  it's not available on MinGW.  Reported by Han-Wen.
2008-09-10 11:38:23 +02:00
Han-Wen Nienhuys
7ddb9baf80 Cleanup mark-during-GC debug checks.
* libguile/__scm.h (SCM_DEBUG): add SCM_DEBUG_MARKING_API

* libguile/gc.h (SCM_SET_GC_MARK): depending on
SCM_DEBUG_MARKING_API crash if someone is touching markbits
outside regular hours.

Rename ensure_marking() to scm_i_ensure_marking().

* libguile/inline.h (scm_double_cell, scm_cell): only set mark bits
for debugging if SCM_DEBUG_MARKING_API is unset

* libguile/gc-mark.c: Issue deprecation warning if we are marking
outside of the GC mark phase.
2008-09-09 23:08:16 -03:00
Ludovic Courtès
a8db4a59c8 Use Gnulib's count-one-bits' as a replacement for scm_i_uint_bit_count ()'.
* libguile/gc-card.c: Include <config.h> and <count-one-bits.h>.
  (scm_i_uint_bit_count): Remove.
  (scm_i_card_marked_count): Use `count_one_bits_l ()' instead
  of `scm_i_uint_bit_count ()'.

* libguile/gc-segment.c: Include <config.h> and <count-one-bits.h>.
  (scm_i_heap_segment_marked_count): Use `count_one_bits_l ()' instead
  of `scm_i_uint_bit_count ()'.

* libguile/private-gc.h (scm_i_uint_bit_count): Remove.
2008-09-09 22:46:04 +02:00
Ludovic Courtès
d7014610b1 Use Gnulib's `count-one-bits' module.
* m4/gnulib-cache.m4 (gl_MODULES): Add `count-one-bits'.
2008-09-09 22:37:43 +02:00
Ludovic Courtès
53f4876abc Merge branch 'master' into strftime-gnulib
Conflicts:
	libguile/ChangeLog
	srfi/ChangeLog
	test-suite/ChangeLog
2008-09-09 22:03:42 +02:00
Ludovic Courtès
242ebeaf08 Get rid of Automake's "maintainer mode".
* NEWS: Update.
* configure.in: Remove `AM_MAINTAINER_MODE' invocation.
* doc/Makefile.am, ice-9/Makefile.am: Ignore `MAINTAINER_MODE'
  conditional.
2008-09-09 18:06:37 +02:00
Andy Wingo
e91e07811a really newline on eof
* module/system/repl/repl.scm (next-char): Another newline-on-eof case.
2008-09-09 08:33:53 +02:00
Andy Wingo
624e533f4f fix program disassembly for meta-in-a-thunk
* module/system/vm/disasm.scm (disassemble-program): Fix for recent
  meta-in-a-thunk change.
2008-09-09 08:27:49 +02:00
Andy Wingo
6a01fabfd0 run the vm repl instead of the scm-style-repl
* ice-9/boot-9.scm (@, @@): Note that these don't work with the compiler.
  Damn.
  (top-repl): Run the VM repl. Whooo!

* module/system/repl/repl.scm (start-repl): Catch 'quit, as the
  scm-style-repl does. Newline after input EOF's, so that we don't leave
  the user's shell messed up.
2008-09-09 08:23:10 +02:00
Andy Wingo
02ed0d3df2 add repl option to interpret rather than compile
* module/language/scheme/spec.scm (scheme): Specify an evaluator, `eval'.

* module/system/repl/common.scm (repl-default-options): Add option,
  `interp', specifying that, if possible, the repl should interpret its
  expressions rather than compile them. Defaults to #f.
2008-09-09 07:54:23 +02:00
Andy Wingo
8e3670748f rework late binding resolution to be simpler and more efficient
* libguile/programs.h (struct scm_program):
* libguile/programs.c (scm_c_make_program): Record the current module
  when making a program. This replaces the per-late binding recorded
  module in the generated code, which should be more efficient, both in
  terms of garbage, and in not calling resolve-module.
  (program-module): New accessor.

* module/system/vm/program.scm: Add program-module to exports.

* libguile/vm-i-loader.c (link-later): Remove this instruction, since now
  the entry in the object table is just a symbol, and can be loaded with
  load-symbol.

* libguile/vm-i-system.c (late-variable-ref, late-variable-set): Rework
  so as to look up in the module of the current program. The logic could
  be condensed quite a bit if scm_module_lookup () knew what to do with
  mod==#f.

* module/system/vm/assemble.scm (dump-object!): Dump <vlink-later> just
  as load-symbol, as mentioned in the note on link-later.

* module/system/il/ghil.scm: Update comment to reflect the new reality.
2008-09-09 07:15:01 +02:00
Andy Wingo
7618201efd final de-:prefixification
* scripts/compile: Don't (read-set! keywords 'prefix) here either.
2008-09-09 07:13:14 +02:00
Andy Wingo
1a1a10d3a5 use #:keywords in module/*.scm, not :keywords
* module/system/base/syntax.scm (keywords): Don't enable :keywords, it
  breaks code that may assume that ':foo is a symbol, like boot-9.

* module/*.scm: Don't use :keywords, use #:keywords. The user can decide
  if she wants #:keywords in their .guile, and :keywords might make us
  compile modules differently.
2008-09-09 06:58:25 +02:00
Ludovic Courtès
191e716555 Update NEWS' wrt. mutex-lock' deadlock fix. 2008-09-08 14:38:03 +02:00
Andy Wingo
13906f976e lazily load meta info, for less consage
* module/system/vm/assemble.scm (make-meta, codegen): Hide the "meta"
  information -- the names of the bindings, source info, procedure
  properties, etc -- behind a lambda. This way, loading up a program
  conses less, because the metadata stays as mmap'd code until it is
  needed.

* libguile/vm-i-loader.c (load-program): Adjust load-program to expect
  the metadata to be a program.

* module/system/vm/program.scm (program-bindings, program-sources)
  (program-properties): Adjust to new meta format.
2008-09-08 01:03:34 +02:00
Andy Wingo
7063452276 compile boot-9. woop!
* ice-9/Makefile.am (SOURCES, NOCOMP_SOURCES): Compile boot-9.scm.
  Wooooo! This makes some things harder to debug, and program loading
  needs to cons much less, but I think it makes sense to compile boot-9
  by default if for no other reason than to catch bugs earlier.
2008-09-07 23:17:58 +02:00
Andy Wingo
6c289afe76 macro-transformer recognizes compiled macros
* libguile/macros.c (macro-transformer): Recognize compiled as well as
  interpreted transformer procedures.
2008-09-07 23:13:52 +02:00
Andy Wingo
3633ff4e95 print compiled macros correctly
* libguile/macros.c (macro_print): Print macros whose code is a program
  as non-primitive. (Already, primitive-macro? would return #f.)
2008-09-07 22:27:19 +02:00
Andy Wingo
80b5909ca8 allow boot-9.go load if available
* libguile/init.c (scm_load_startup_files): Don't specify the .scm
  suffix, so as to allow loading a boot-9.go if appropriate.
2008-09-07 22:27:19 +02:00
Andy Wingo
275e003295 remove define-syntax-macro from boot-9.scm
* ice-9/boot-9.scm (defmacro:syntax-transformer, define-syntax-macro):
  Removed these, as I could not see anywhere they were being used, and
  they use the unnecessary procedure->syntax procedure.
2008-09-07 22:27:18 +02:00
Andy Wingo
29a321aef0 take procedure->memoizing-macro off of probation
* module/language/scheme/translate.scm (%forbidden-primitives): Take
  procedure->memoizing-macro off probation; although it's not a good
  idea, there is a fair amount of existing code that uses it that can be
  compiled fine. So allow it in that case.
2008-09-07 22:27:18 +02:00
Andy Wingo
7e58032880 make thunk? understand programs
* libguile/procs.c (thunk?): Return #t for thunk programs.
2008-09-07 22:27:18 +02:00
Andy Wingo
b95b1b835e reorder module system boot time
* ice-9/boot-9.scm: Postpone module system boot until (%app modules) is
  defined, so that resolve-module will work. This might not actually be
  necessary given the previous tomfoolery in resolve-module, but it
  doesn't seem like a bad change.
2008-09-07 22:27:18 +02:00
Andy Wingo
73dea589ca module-variable accesses pre-module-obarray if module is #f
* libguile/modules.c (module-variable): If module is #f, access the
  pre-modules-array. This is so that nested-ref can work before the
  module system is booted, I think.

  Of course all of these dependency lines during bootstrap are just to
  make sure the system can be booted properly, either interpreted or
  compiled, so there's no one right way: there are many ways that could
  work.
2008-09-07 22:27:18 +02:00
Andy Wingo
53f84bc8b5 prevent (resolve-module '(guile)) recursion
* ice-9/boot-9.scm (resolve-module): Change so that resolving '(guile)
  does not require any module lookups. This is so that while within a
  call to (resolve-module '(guile)), we don't recurse when looking up the
  location for e.g. `append'. I can imagine other ways to get around
  this, but this one seems OK.
2008-09-07 22:27:18 +02:00
Andy Wingo
3aabb7b793 make late-variable-{ref,set} work before module system boot
* libguile/vm-i-system.c (late-variable-ref, late-variable-set): If the
  module system isn't booted, do a simple scm_lookup. In the -ref case,
  actually cache the variable location (doh!).
2008-09-07 22:27:18 +02:00
Andy Wingo
1b79210aa2 better diagnostics on quasiquote errors
* module/system/il/compile.scm (constant?, codegen): Add some diagnostics
  so that we can get decent error reporting if we accidentally unquote an
  unreadable value into the compiled output.
2008-09-07 22:27:18 +02:00
Andy Wingo
2e7e6969bd allow multiple modules in one compilation unit
* module/system/il/ghil.scm (<ghil-env>, <ghil-toplevel-env>): Refactor
  so that all environments point (eventually) at one toplevel
  environment. Instead of having potentially multiple toplevel
  environments, each noting the module against which its bindings are
  resolved, have each binding in the toplevel record what module it
  should be resolved in. Should fix compilation units that define
  multiple modules.
  (ghil-lookup, ghil-define): Reworked to not be destructive. Module
  variables now have the module name as their "env", and are keyed as
  `(MODNAME . SYM)' in the var table.
  (call-with-ghil-environment): Reindented.

* module/system/il/inline.scm (try-inline-with-env): Adapt to
  env/toplevel changes.

* module/system/vm/assemble.scm (dump-object!): A vlink-later now holds
  the module name, not the module itself.

* module/system/il/compile.scm (make-glil-var): The "env" of a "module"
  var is now the module name, not the module.

* module/language/scheme/translate.scm (primitive-syntax-table): Update
  the way we test for toplevel environments. Reindent the lambda
  translator.
  (lookup-transformer, trans): lookup-transformer now has 2 args, not 3.
  (translate): Update the way we make toplevel environments.
2008-09-07 22:27:08 +02:00
Andy Wingo
b5c46470a5 improve backtraces
* module/system/vm/frame.scm (frame-call-representation): Show more of
  lists.
  (program-name): Avoid a traceback if (frame-address link) is #f. Not
  sure when this can happen, but it does, and since this is already in
  the backtrace function, there be badness there.
2008-09-07 22:15:25 +02:00
Andy Wingo
ee79dfab3d update .gitignore files
* .gitignore:
* libguile/.gitignore: Update
2008-09-07 22:14:18 +02:00
Ludovic Courtès
32e29e24b6 Update NEWS' wrt. the removal of scm_i_' symbols. 2008-09-04 21:33:44 +02:00
Han-Wen Nienhuys
39d275916b * eval.c: Mark #endif with comment. 2008-09-03 23:27:42 -03:00
Han-Wen Nienhuys
289cd1a720 Don't sanity check GC numbers on 64 bit platforms, while we
investigate a real fix.
2008-09-03 01:37:58 -03:00
Ludovic Courtès
4e641322d3 Fix compilation of `libguile-i18n' on NetBSD.
* libguile/i18n.c (str_upcase, str_downcase, scm_char_locale_downcase,
  scm_char_locale_upcase): Cast chars to `int' when invoking `toupper ()'
  et al. to avoid "array subscript has type 'char'" on NetBSD.
  Reported by Greg Toxel <gdt@ir.bbn.com>.
2008-09-02 23:01:47 +02:00
Ludovic Courtès
69f23174d3 Use Gnulib's `strftime' to address bug #24130.
* libguile/stime.c (scm_strftime): Use `nstrftime ()' from Gnulib.
  This provides the same semantics on all platforms, thereby fixing
  bug #24130.

* doc/ref/posix.texi (Time): Remove note about non-portable `%Z'
  behavior.  Describe the new, portable behavior.

* test-suite/tests/time.test ("strftime")["strftime %Z doesn't return
  garbage"]: Reinstate.
  ["C99 %z format"](have-strftime-%z): Remove.
  ("GMT", "EST+5"): Don't use `have-strftime-%z'.
2008-09-02 21:58:58 +02:00
Ludovic Courtès
e65fc94b7a Add Gnulib `strftime' module, update Gnulib files.
* m4/gnulib-cache.m4 (gl_MODULES): Add `strftime'.
2008-09-02 21:16:10 +02:00
Andy Wingo
97f1153a86 superstition with no important effect
* module/system/vm/assemble.scm (dump-object!): Some superstition, use
  bit arithmetic instead of int arithmetic. Makes me happier.
2008-09-02 11:00:32 -07:00
Andy Wingo
22f4ee4882 make primitive-load-path load compiled files if available
* libguile/load.h: Update scm_search_path prototype.

* libguile/load.c: Include vm.h for load-compiled/vm. Not sure if this is
  bad wrt modularity.
  (scm_c_string_has_an_ext): New private helper.
  (scm_search_path): Add an extra optional arg, `require_exts'; if true,
  require that the returned file name have one of the given extensions.
  Changes the C API, but not the scheme API.
  (scm_sys_search_load_path): Adapt to scm_search_path API change.
  (primitive-load-path): Here is the craziness: load a compiled file if
  found and newer than the corresponding (or not) source file.
  (scm_init_load): Define %load-compiled-extensions as the list of
  extensions denoting compiled files; defaults to '(".go").
2008-09-02 11:00:32 -07:00
Andy Wingo
90b0be2028 move up some initializations in the vm
* libguile/vm.c: Move 'vm-run, 'vm-error, 'debug sym initialization up to
  the bootstrap phase, so they are ready if load-compiled/vm is called
  before (system vm vm) is loaded.
2008-09-02 11:00:32 -07:00
Andy Wingo
27af6bc2b3 turn define-option-interface into a defmacro
* ice-9/boot-9.scm (define-option-interface): Turn into a defmacro
  instead of an mmacro.
2008-09-02 11:00:31 -07:00
Andy Wingo
373d251b4d disable start-stack in compiled code
* module/language/scheme/translate.scm (primitive-syntax-table): Disable
  semantics of start-stack in compiled code. I think start-stack
  semantics aren't bad, but they don't have vm-based implementations at
  this point.
2008-09-02 11:00:27 -07:00
Andy Wingo
060cce72db remove the-environment, the-root-environment, environment-module
* ice-9/boot-9.scm (the-environment, the-root-environment)
  (environment-module): Remove these representation of the interpreter's
  idea of the environment, because they are not valid in the compiled
  case, and are not part of the scheme spec anyway.
2008-09-02 10:30:39 -07:00
Andy Wingo
3bf2760867 avoid local-eval in record constructors and accessors
* ice-9/boot-9.scm (record-constructor, record-accessor)
  (record-modifier): Avoid local-eval when possible, because it uses the
  interpreter's representation of environments; and when we need to eval,
  use primitive-eval instead. Slight semantic change in that this
  evaluates relative to the current module rather than the root module,
  but not really a biggie. Should make this compilable in the future,
  somehow.
2008-09-02 10:30:39 -07:00
Andy Wingo
1b68d041a5 nits picked on boot-9.scm
* ice-9/boot-9.scm (defmacro): Indentation fix.
  (begin-deprecated): Don't cons in the `begin' macro itself, only the
  symbol `begin'.
2008-09-02 10:30:39 -07:00