summaryrefslogtreecommitdiff
path: root/libguile/load.c
AgeCommit message (Collapse)AuthorFilesLines
2009-08-20autocompiled files before installation go to a cache dir in the builddirAndy Wingo1-1/+1
* libguile/load.c (scm_init_load_path): Append a slash after XDG_CACHE_HOME. * meta/gdb-uninstalled-guile.in: * meta/guile.in (XDG_CACHE_HOME): Export this var so we write to a cache within the build directory. Probably we should have a GUILE_CACHE_DIR to be more specific, though. * Makefile.am (clean-local): Clear the cache when making clean.
2009-08-18`load' autocompilesAndy Wingo1-5/+13
* libguile/load.h: * libguile/load.c (scm_sys_warn_autocompilation_enabled): New primitive, not exported. Since `load' autocompiles now, it should warn in the same way that the bits hardcoded into C warn. (scm_try_autocompile): Use scm_sys_warn_autocompilation_enabled. * module/ice-9/boot-9.scm (autocompiled-file-name): New helper. (load): Try autocompiling the argument, if appropriate. Will autocompile files passed on Guile's command line. `primitive-load' is unaffected.
2009-08-18Merge branch 'master' into boehm-demers-weiser-gcLudovic Courtès1-43/+238
Conflicts: lib/Makefile.am libguile/Makefile.am libguile/frames.c libguile/gc-card.c libguile/gc-freelist.c libguile/gc-mark.c libguile/gc-segment.c libguile/gc_os_dep.c libguile/load.c libguile/macros.c libguile/objcodes.c libguile/programs.c libguile/strings.c libguile/vm.c m4/gnulib-cache.m4 m4/gnulib-comp.m4 m4/inline.m4
2009-08-11make the fallback path look less like line noiseAndy Wingo1-1/+2
* libguile/_scm.h: * libguile/load.c: Rework to only include the relevant pieces in the fallback path.
2009-08-11include objcode cookie in the fallback pathAndy Wingo1-1/+1
* libguile/_scm.h (SCM_OBJCODE_COOKIE): Move the objcode cookie define here, so that load.c can use it. This is a private header. * libguile/load.c (FALLBACK_DIR): Include the objcode cookie in the fallback path. Should fix problems when objcode changes incompatibly during the 1.9 series. * libguile/objcodes.c: Adapt to SCM_OBJCODE_COOKIE move. This should fix http://article.gmane.org/gmane.lisp.guile.devel/9059.
2009-06-20put autocompiled files into ~/.cache or $XDG_CACHE_HOMEAndy Wingo1-16/+20
* module/system/base/compile.scm (compiled-file-name): Remove unneeded path separator. * libguile/load.c (scm_init_load_path): Change so the default cache path is ~/.cache/guile/ccache/1.9, and respect $XDG_CACHE_HOME.
2009-06-17Change Guile license to LGPLv3+Neil Jerram1-6/+7
(Not quite finished, the following will be done tomorrow. module/srfi/*.scm module/rnrs/*.scm module/scripts/*.scm testsuite/*.scm guile-readline/* )
2009-06-05stamp .go with timestamp of .scm; a fresh go has same mtime of .scmAndy Wingo1-4/+4
* libguile/load.c (compiled_is_fresh): Rename from compiled_is_newer. Check that the mtines of the .go and .scm match exactly, so we don't get fooled by rsync-like modifications of the filesystem. * module/system/base/compile.scm (call-with-output-file/atomic): Add optional arg, a reference file. If present we utime the output file to match the source file, before the rename. (compile-file): Stamp the .go file with the timestamp of the .scm.
2009-06-05final (?) tweaks to the autocompile codeAndy Wingo1-9/+37
* libguile/load.c (do_try_autocompile): Use module_variable, not module_lookup, when resolving compile-file, so we get #f instead of an exception if the compiler is in the process of being loaded. (scm_primitive_load_path): In what I hope is the last patch to this code, recheck the fallback path if we found a stale installed .go file.
2009-06-05simplify autocompilation some moreAndy Wingo1-74/+64
* libguile/load.c (scm_init_load_path): Set the fallback path even if GUILE_SYSTEM_COMPILED_PATH is set. Now that we store full paths in the autocompiled files, and the path contains the effective Guile version, there's no danger of accidental collisions. (do_try_autocompile, autocompile_catch_handler, scm_try_autocompile): Simplify again -- since there's only one place we put autocompiled files, and compile-file finds it itself, there's no need to pass along the compiled file path. (scm_primitive_load_path): Don't call out to compiled-file-name to get the fallback path, as we might not be autocompiling, and besides that we need to check if the file exists at all. * module/system/base/compile.scm (compiled-file-name): Simplify again. The auto-compiled path is just fallback path + full source path + .go.
2009-06-05further autocompilation tweaksAndy Wingo1-35/+43
* module/system/base/compile.scm (compiled-file-name): * libguile/load.c (scm_init_load_path, scm_try_autocompile) (scm_primitive_load_path): Rework so that we search for .go files in the load-compiled path and in the fallback path, but we only autocompile to the fallback path. Should produce a more desirable experience.
2009-06-03fix error autocompiling parts of the compiler; make check worksAndy Wingo1-1/+13
* libguile/load.c (scm_try_autocompile): Punt if compiled-file-name does not resolve, which would indicate that the file in question is part of the compiler itself. * test-suite/tests/elisp.test: Today I was an evil one -- disable autocompilation for the elisp tests, as they are meant only for the memoizer's eyes. Hopefully Daniel will fix this :-)
2009-06-03tweaks to autocompile codeAndy Wingo1-13/+36
* libguile/load.c (compiled_is_newer): Tweak diagnostic output. (do_try_autocompile, autocompile_catch_handler, scm_try_autocompile): Rework to compute the name of the compiled file in advance. If the computed name is different from the found .go file and is fresh, use it directly. Fixes the case where /usr/lib/.../foo.go is out of date but the user doesn't have permissions to recompile, so we use the user's local compile cache instead if it's fresh. (scm_primitive_load): Pass the found .go file as well to scm_try_autocompile.
2009-06-03implement autocompilationAndy Wingo1-1/+61
* am/guilec (.scm.go): Set GUILE_AUTO_COMPILE=0 when compiling individual files, and remove the mkdir -p as compile-file takes care of that now. * libguile/load.c (do_try_autocompile, autocompile_catch_handler) (scm_try_autocompile, scm_init_load): Implement autocompilation. * libguile/script.c (scm_shell_usage, scm_compile_shell_switches): Add --autocompile / --no-autocompile command-line options, and support for the GUILE_AUTO_COMPILE environment variable, defaulting to autocompilation enabled.
2009-06-03add exception_on_error optional arg to primitive-load-pathAndy Wingo1-6/+17
* libguile/init.c (scm_load_startup_files): Use scm_c_primitive_load_path. * libguile/load.c (scm_primitive_load_path): Add an optional arg, exception_on_error, which if #f will cause primitive-load-path to just return #f if no file is found. This is to help out the semantics of try-module-autoload. We can't just catch misc-error, because loading the file could raise any exception. (scm_c_primitive_load_path): Add the extra arg to scm_primitive_load_path. * libguile/load.h: Adapt scm_primitive_load_path prototype. * module/ice-9/boot-9.scm (try-module-autoload): Refactor slightly to be clearer.
2009-06-03refactors to load.c to support auto-compilationAndy Wingo1-32/+45
* libguile/load.c (compiled_is_newer): Factored out of scm_primitive_load_path. (scm_try_autocompile): New stub, for autocompiling. Currently just returns false. (scm_primitive_load_path): Refactor, and call out to scm_try_autocompile if the .go is missing or not fresh.
2009-06-03separate the load-compiled path from the load pathAndy Wingo1-2/+46
* libguile/Makefile.am (libpath.h): Add definitions for SCM_CCACHE_DIR and SCM_EFFECTIVE_VERSION. These are private, the header is not installed. Add ccachedir to build-info. Rework some other build-info definitions. * libguile/load.c (scm_loc_load_compiled_path): New global, corresponding to the new environment variable, GUILE_LOAD_COMPILED_PATH. Compiled files will now be searched for in this path, and only in this path. (scm_init_load_path): Init the load-compiled path too. We initialize it with $pkglibdir/guile/$effective_version/ccache, and also with $HOME/.guile-ccache/$effective_version/. This will respect the libdir/datadir difference, and it is a preparation for automatic compilation support. (scm_primitive_load_path): Search only the GUILE_LOAD_COMPILED_PATH for compiled files. (scm_init_load): Cache scm_loc_load_compiled_path.
2009-03-22Merge branch 'master' into boehm-demers-weiser-gcLudovic Courtès1-10/+99
Conflicts: libguile/continuations.c libguile/gc-freelist.c libguile/gc-mark.c libguile/symbols.c libguile/threads.c module/ice-9/boot-9.scm
2008-09-30Merge commit 'origin/master' into vmAndy Wingo1-1/+1
Conflicts: doc/Makefile.am ice-9/Makefile.am libguile/gc.c
2008-09-18don't poke installed scm, go, etc files when running pre-inst-guileAndy Wingo1-3/+11
* libguile/load.c (scm_init_load_path): If GUILE_SYSTEM_PATH is set, use that instead of the compiled-in suffix to the load path. And, as a special case, GUILE_SYSTEM_PATH= is interpreted as '(). A bit nasty. * pre-inst-guile-env.in (top_builddir): Set GUILE_SYSTEM_PATH to the empty string, if it is not set.
2008-09-17Remove GC-related code from fluids.Ludovic Courtès1-5/+4
* libguile/fluids.c (all_dynamic_states, all_fluids): Remove. Together, they prevented dynamic states and fluids to be collected. Callers no longer use them. (resize_all_states): Remove. (grow_dynamic_state): New function. (next_fluid_num): Don't call `resize_all_states ()'. (scm_i_fluid_num, scm_i_fast_fluid_ref, scm_i_fast_fluid_set_x): Remove, as they broke encapsulation and would have needed duplication of the lazy dynamic state growing code. (scm_fluid_ref, scm_fluid_set_x): Lazily grow the dynamic state's fluid vector. (scm_fluids_prehistory): Don't set an `scm_after_sweep_c_hook'. * libguile/fluids.h (SCM_FLUID_NUM, SCM_FAST_FLUID_REF, SCM_FAST_FLUID_SET_X, scm_i_fluid_num, scm_i_fast_fluid_set_x, scm_i_fast_fluid_ref): Remove. * libguile/load.c (the_reader_fluid_num): Remove. (scm_primitive_load): Use `scm_fluid_ref ()' instead of `SCM_FAST_FLUID_REF ()'. (scm_init_load): Likewise.
2008-09-13Include <config.h> in all C files; use `#ifdef HAVE_CONFIG_H' rather than `#if'.Ludovic Courtès1-1/+1
2008-09-02make primitive-load-path load compiled files if availableAndy Wingo1-7/+88
* 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").
2006-04-17merge from 1.8 branchKevin Ryde1-1/+1
2006-01-29Renamed the "frames" that are related to dynamic-wind to "dynamicMarius Vollmer1-8/+8
contexts. Renamed all functions from scm_frame_ to scm_dynwind_. Updated documentation.
2005-12-14* api-evaluation.texi (Loading): Document custom reader.Neil Jerram1-1/+21
* boot-9.scm (load-module): Support an optional custom reader arg, implemented by passing on to r4rs's load. * r4rs.scm (load): Support an optional custom reader arg, implemented by passing on to primitive-load. * load.c (the_reader, the_reader_fluid_num): New. (scm_primitive_load): Support custom reader. (scm_init_load): Init the_reader and the_reader_fluid_num; export the_reader as `current-reader'.
2005-05-23The FSF has a new address.Marius Vollmer1-1/+1
2005-05-12* unif.c (scm_i_read_array): Declare rank as ssize_t, to guaranteeNeil Jerram1-2/+2
that it is signed. * strports.c (st_resize_port): Add unsigned char cast. (scm_mkstrport): Make read/write_buf cast unsigned. * srfi-13.c (string_titlecase_x): Add unsigned char cast. * rdelim.c (scm_read_line): Initialize slen. * load.c (scm_search_path): Remove weird >=1, and add parentheses to clarify conditions. * hash.c (scm_hasher): Add const unsigned char cast. * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
2005-03-02(scm_primitive_load): Use scm_i_frame_current_load_port instead ofMarius Vollmer1-30/+13
scm_internal_dynamic_wind.
2004-09-22*** empty log message ***Marius Vollmer1-3/+3
2004-08-24Include "srfi-13.h" instead of "strop.h".Marius Vollmer1-1/+1
2004-08-19* strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,Marius Vollmer1-16/+17
scm_i_string_writable_chars, scm_i_string_stop_writing): New, to replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all uses. (scm_i_make_string, scm_c_make_string): New, to replace scm_allocate_string. Updated all uses. (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Deprecated. (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string, scm_str2string, scm_makfrom0str, scm_makfrom0str_opt): Discouraged. Replaced all uses with scm_from_locale_string or similar, as appropriate. (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x, scm_c_substring, scm_c_substring_shared, scm_c_substring_copy, scm_substring_shared, scm_substring_copy): New. * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC, SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS, SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol, scm_str2symbol, scm_mem2uninterned_symbol): Discouraged. (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str): Deprecated. (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS, SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed. (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln): New, to replace scm_str2symbol and scm_mem2symbol, respectively. Updated all uses. (scm_gensym): Generate only the number suffix in the buffer, just string-append the prefix.
2004-08-13(scm_init_load_path): Do not pass NULL to scm_to_locale_string, whichMarius Vollmer1-2/+4
would happen when GUILE_LOAD_PATH is not set. Thanks to Bill Schottstaedt.
2004-08-12(scm_primitive_load_path): Do not check for absolute filenames whenMarius Vollmer1-15/+2
scm_sys_search_load_path returns false, which will return absolute filenames unchanged.
2004-08-10Removed commented out debugging fprintfs.Marius Vollmer1-3/+0
2004-08-10(scm_internal_parse_path): Removed.Marius Vollmer1-129/+153
(scm_parse_path): Use scm_string_split to do the work. (scm_init_load_path): Use scm_parse_path instead of scm_internal_parse_path. (scm_search_path): Rewritten string handling part of the code in terms of scm_to_locale_stringbuf and so that it is thread safe.
2004-07-27* tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it intoMarius Vollmer1-2/+2
deprecated.h. Replaced all uses with scm_is_eq.
2004-07-06* deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,Marius Vollmer1-5/+5
SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into "deprecated.h". Replaced all uses with scm_is_false, scm_is_true, scm_from_bool, and scm_is_bool, respectively.
2003-05-292003-05-29 Stefan Jahn <stefan@lkcc.org>Stefan Jahn1-0/+26
* configure.in: Removed -lm check and added a cached check for __libc_stack_end to get it building for mingw32 hosts. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * win32-dirent.c: Use malloc() instead of scm_malloc(). * stime.c (s_scm_strftime): Add a type cast to avoid compiler warning. * posix.c (s_scm_putenv): Disable use of unsetenv() for the mingw32 build. * modules.c (s_scm_module_import_interface): Renamed local variable interface to _interface. Seems like 'interface' is a special compiler directive for the mingw32 compiler. * mkstemp.c: Provide prototype to avoid compiler warning. * load.c (s_scm_search_path): Fixed absolute and relative path detections for native Windows platforms. * gc.h, threads.h: Export some more symbols using SCM_API (necessary to build on mingw32). * gc-freelist.c ("s_scm_map_free_list", "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME. * fports.c (fport_fill_input): Disable use of fport_wait_for_input() on Win32 platforms. * filesys.c (s_scm_basename): Fixed __MINGW32__ code. * Makefile.am: Modified some rules for cross compiling. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * raw-ltdl.c: Some more modifications for mingw32 platforms. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * Makefile.am (libguile_srfi_srfi_1_la_LDFLAGS, libguile_srfi_srfi_4_la_LDFLAGS, libguile_srfi_srfi_13_14__la_LDFLAGS): Added the -no-undefined option for the mingw32 build. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * standalone/Makefile.am: Setup to build on mingw32.
2003-04-05Changed license terms to the plain LGPL thru-out.Marius Vollmer1-36/+12
2003-03-25* load.c: #include <config.h> if HAVE_CONFIG_H.Rob Browning1-0/+4
2002-07-202002-07-20 Han-Wen <hanwen@cs.uu.nl>Han-Wen Nienhuys1-2/+2
* *.c: add space after commas everywhere. * *.c: use SCM_VECTOR_SET everywhere, where a vector is written. Document cases where SCM_WRITABLE_VELTS() is used. * vectors.h (SCM_VELTS): prepare for write barrier, and let SCM_VELTS() return a const pointer (SCM_VECTOR_SET): add macro. * autogen.sh (mscripts): find and check version number of autoconf. Complain if 2.53 is not found.
2002-03-14Retire inclusion guard macro SCM_MAGIC_SNARFER.Thien-Thi Nguyen1-2/+0
2002-02-11* gc.h, gc.c (scm_gc_sweep): Issue deprecation warning whenMarius Vollmer1-3/+2
non-zero is returned from a port or smob free function. (scm_malloc, scm_realloc, scm_strndup, scm_strdup, scm_gc_register_collectable_memory, scm_gc_unregister_collectable_memory, scm_gc_malloc, scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New. * backtrace.c, continuations.c, convert.i.c, coop-threads.c, debug-malloc.c, dynl.c, environments.c, environments.h, extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c, guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c, ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c, smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c, vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and scm_gc_free/free instead of scm_must_malloc and scm_must_free, as appropriate. Return zero from smob and port free functions. * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL". * fports.c (scm_setvbuf): Reset read buffer to saved values when it is pointing to the putback buffer.
2002-01-22* First batch of libguile changes for Elisp support.Neil Jerram1-5/+6
* Fixed a few typos. * Minor rationalization of macros relating to source breakpoints.
2001-08-31* Removed deprecated stuff.Dirk Herrmann1-24/+0
* Some more renamings to SCM_<filename>_H.
2001-07-09Remove "face-lift" comment.Thien-Thi Nguyen1-2/+0
2001-06-29(scm_c_primitive_load,Marius Vollmer1-0/+12
scm_c_primitive_load_path): New.
2001-06-28 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,Keisuke Nishida1-7/+7
scm_list_n): New functions. (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated. (lots of files): Use the new functions. * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N. * strings.c: #include "libguile/deprecation.h".
2001-06-26 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,Keisuke Nishida1-1/+1
scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.