summaryrefslogtreecommitdiff
path: root/modules
Commit message (Collapse)AuthorAgeFilesLines
* ; Add 2022 to copyright years.Eli Zaretskii2022-01-011-1/+1
|
* Update copyright year to 2021Paul Eggert2021-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright".
* Update copyright year to 2020Paul Eggert2020-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
* Update copyright year to 2019Paul Eggert2019-01-011-1/+1
| | | | Run 'TZ=UTC0 admin/update-copyright $(git ls-files)'.
* Update copyright year to 2018Paul Eggert2018-01-011-1/+1
| | | | Run admin/update-copyright.
* modhelp.py: Support Python 3 (Bug#24954)Syohei YOSHIDA2017-12-031-12/+12
| | | | | * modules/modhelp.py: 'print' statement was removed in Python 3. 'print' function should be used instead of 'print' statement.
* Prefer HTTPS to FTP and HTTP in documentationPaul Eggert2017-09-131-1/+1
| | | | | | | | | | | | | Most of this change is to boilerplate commentary such as license URLs. This change was prompted by ftp://ftp.gnu.org's going-away party, planned for November. Change these FTP URLs to https://ftp.gnu.org instead. Make similar changes for URLs to other organizations moving away from FTP. Also, change HTTP to HTTPS for URLs to gnu.org and fsf.org when this works, as this will further help defend against man-in-the-middle attacks (for this part I omitted the MS-DOS and MS-Windows sources and the test tarballs to keep the workload down). HTTPS is not fully working to lists.gnu.org so I left those URLs alone for now.
* Integrate module test with normal test suitePhilipp Stephani2017-04-293-461/+0
| | | | | | | | | | | | | | | | | | | | * test/Makefile.in (ELFILES): Exclude module test if modules aren't configured. (EMACS_TEST_DIRECTORY): Expand test directory so that it's set correctly even if Emacs changes the current directory. ($(srcdir)/src/emacs-module-tests.log) ($(test_module)): Proper dependency tracking for test module. * test/data/emacs-module/Makefile (ROOT): Adapt to new location. Remove 'check' target and EMACS variable, which are no longer necessary. (SO): Change to include period. * test/src/emacs-module-tests.el (mod-test): Use EMACS_TEST_DIRECTORY environment variable to reliably find test data. * configure.ac (HAVE_MODULES, MODULES_SUFFIX): Add necessary substitutions.
* Add check for expected backtrace in module calls.Philipp Stephani2017-03-261-1/+15
| | | | | * test.el (mod-test-non-local-exit-signal-test): Compare actual backtrace to expected backtrace.
* Merge from origin/emacs-25Paul Eggert2017-01-014-4/+4
|\ | | | | | | | | 2e2a806 Fix copyright years by hand 5badc81 Update copyright year to 2017
| * Update copyright year to 2017Paul Eggert2016-12-314-4/+4
| | | | | | | | Run admin/update-copyright.
* | Fix template for module functionsPaul Eggert2016-11-281-1/+1
|/ | | | | | Reported by Syohei YOSHIDA (Bug#24932). * modules/modhelp.py (TEMPLATES): c_func’s 2nd arg is ptrdiff_t, not int.
* Rework C source files to avoid ^(Paul Eggert2016-03-101-2/+2
| | | | | | | | Work around Bug#22884 by rewording comments and strings to avoid ‘(’ at the start of a line unless it starts a function. This change is a short-term hack; in the longer run we plan to fix cc-mode’s performance for C files that have ‘(’ at the start of a line in a comment or string.
* Update copyright year to 2016Paul Eggert2016-01-014-4/+4
| | | | Run admin/update-copyright.
* Port mod-test to 32-bit Emacs --without-wide-intPaul Eggert2015-12-061-0/+5
| | | | | | * modules/mod-test/test.el (mod-test-sum-test): Bring back the 2**29 tests, but port them to 32-bit Emacs --without-wide-int.
* Port mod-test to x86-64 GNU/Linux running 32-bitPaul Eggert2015-12-061-9/+7
| | | | | | | | | * modules/mod-test/test.el (mod-test-sum-test): Don’t attempt to match descriptions to operating systems. It didn’t work on Fedora x86-64 running a 32-bit executable, and it’s not worth the trouble anyway. Port to 32-bit platforms by removing an assumption about fixnum widths.
* More emacs-module.c fixes for wide intsEli Zaretskii2015-12-021-1/+6
| | | | | | | | | | * src/emacs-module.c (value_to_lisp) [WIDE_EMACS_INT]: Use unsigned data types to manipulate pointers, to avoid sign extension coming after us with a vengeance. * modules/mod-test/test.el (mod-test-sum-test): Add tests for Emacs with wide ints that verify integer values near the critical value that requires us to switch to a cons cell.
* Fix emacs-module.c for wide intsEli Zaretskii2015-12-011-1/+5
| | | | | | | | | | * src/emacs-module.c (lisp_to_value): Compare the produced value with the original Lisp object, not with the one potentially converted into a Lisp_Cons. Fixes assertion violations when working with integers larger than fit into a 32-bit value. * modules/mod-test/test.el (mod-test-sum-test): Add tests for large integers, to test --with-wide-int.
* Rely on conservative stack scanning to find "emacs_value"sStefan Monnier2015-11-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/emacs-module.c (struct emacs_value_tag) (struct emacs_value_frame, struct emacs_value_storage): Remove. (value_frame_size): Remove constant. (struct emacs_env_private): Use Lisp_Object for non_local_exit info. (lisp_to_value): Remove first arg. (module_nil): New constant. Use it instead of NULL when returning an emacs_value. (module_make_function): Adjust to new calling convention of Qinternal_module_call. (DEFUN): Receive args in an array rather than a list. Use SAFE_ALLOCA rather than xnmalloc. Skip the lisp_to_value loop when we don't have WIDE_EMACS_INT. Adjust to new type of non_local_exit info. (module_non_local_exit_signal_1, module_non_local_exit_throw_1): Adjust to new type of non_local_exit info. (ltv_mark) [WIDE_EMACS_INT]: New constant. (value_to_lisp, lisp_to_value): Rewrite. (initialize_frame, initialize_storage, finalize_storage): Remove functions. (allocate_emacs_value): Remove function. (mark_modules): Gut it. (initialize_environment): Don't initialize storage any more. Keep the actual env object on Vmodule_environments. (finalize_environment): Don't finalize storage any more. (syms_of_module): Initialize ltv_mark and module_nil. * src/emacs-module.h (emacs_value): Make it more clear that this type is really opaque, including the fact that NULL may not be valid. * modules/mod-test/mod-test.c (Fmod_test_signal, Fmod_test_throw): Don't assume that NULL is a valid emacs_value.
* Spelling and grammar fixesPaul Eggert2015-11-292-2/+2
|
* Update mod-test-sum-testKen Brown2015-11-291-1/+3
| | | | | * modules/mod-test/test.el (mod-test-sum-test): Update to accommodate the lack of dladdr on Cygwin.
* ; * modules/mod-test/Makefile: Fix typo.Ken Brown2015-11-281-1/+1
|
* Add module tests for wrong-type-argumentEli Zaretskii2015-11-271-1/+3
| | | | | * modules/mod-test/test.el (mod-test-sum-test): Add tests for wrong-type-argument.
* Add one more mod-test testEli Zaretskii2015-11-241-1/+11
| | | | | | * modules/mod-test/test.el (mod-test-sum-test): Test the error signaled when the function is invoked with a wrong number of arguments.
* * modules/mod-test/mod-test.c (Fmod_test_sum): Verify there are 2 args.Philipp Stephani2015-11-241-0/+2
|
* Fix module test to use ptrdiff_t nargs tooPaul Eggert2015-11-201-20/+18
| | | | | | | | | | * modules/mod-test/mod-test.c (Fmod_test_return_t) (Fmod_test_sum, Fmod_test_signal, Fmod_test_throw) (Fmod_test_non_local_exit_funcall, Fmod_test_globref_make) (Fmod_test_string_a_to_b, Fmod_test_userptr_make) (Fmod_test_userptr_get, Fmod_test_vector_fill) (Fmod_test_vector_eq): Arg counts are ptrdiff_t, not int. (finalizer): Remove; no longer used.
* Minor improvements in module testEli Zaretskii2015-11-202-2/+3
| | | | | | | * modules/mod-test/mod-test.c: Include stdlib.h, to avoid warnings about missing prototype of malloc. * modules/mod-test/Makefile (CFLAGS): Add -std=gnu99, to avoid compiler warnings.
* Prefer signed integer types in module codePaul Eggert2015-11-191-7/+7
| | | | | | | | | | | | | | | | | | Generally speaking, at the C level the Emacs source code prefers signed types like ‘ptrdiff_t’ to unsigned types like ‘size_t’, partly to avoid the usual signedness confusion when comparing values. Change the module API to follow this convention. Use ‘int’ for small values that can’t exceed INT_MAX. * modules/mod-test/mod-test.c (Fmod_test_globref_make) (Fmod_test_string_a_to_b, Fmod_test_vector_fill) (Fmod_test_vector_eq): * src/emacs-module.c (struct emacs_value_frame) (module_make_global_ref, module_free_global_ref) (module_copy_string_contents, module_make_string) (module_vec_set, module_vec_get, module_vec_size): * src/emacs-module.h (struct emacs_runtime, struct emacs_env_25): * src/lread.c (suffix_p): Prefer signed to unsigned integer types.
* Omit ‘const’ on localsPaul Eggert2015-11-191-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Remove ‘const’ qualifier from locals that were newly added. We don’t normally bother declaring locals with ‘const’ even though they are not modified, for the same reason we don’t bother declaring them with ‘register’ even though their addresses are not taken; the advantage in compile-time checking isn’t worth the loss of readability. * modules/mod-test/mod-test.c (Fmod_test_non_local_exit_funcall) (Fmod_test_vector_fill, Fmod_test_vector_eq): * src/emacs-module.c (MODULE_SETJMP_1) (module_make_global_ref, module_free_global_ref) (module_non_local_exit_get, module_make_function) (module_extract_integer, module_extract_float) (module_get_user_ptr, module_set_user_ptr) (module_get_user_finalizer, module_set_user_finalizer) (module_vec_get, Fmodule_call) (module_non_local_exit_signal_1) (module_non_local_exit_throw_1, lisp_to_value) (finalize_storage, allocate_emacs_value, mark_modules) (module_handle_signal, module_handle_throw) (module_format_fun_env): * src/eval.c (push_handler, push_handler_nosignal) (init_handler): * src/lread.c (suffix_p): Omit unnecessary ‘const’.
* Prefer intmax_t to int64_t in module codePaul Eggert2015-11-191-4/+5
| | | | | | | | | | | * modules/mod-test/mod-test.c (sum, Fmod_test_sum): * src/emacs-module.c (module_extract_integer) (module_make_integer): * src/emacs-module.h (struct emacs_env_25): Prefer intmax_t to int64_t. This doesn’t change the generated code on any of the machines Emacs currently ports to, but it’s at least in theory more future-proof as C99 doesn’t guarantee that int64_t exists.
* Rename module.c to emacs-module.c, etc.Paul Eggert2015-11-192-2/+2
| | | | | | * src/emacs-module.c: Rename from src/module.c. * src/emacs-module.h: Rename from src/module.h. All uses changed.
* Style fixes for indenting etc. in module codePaul Eggert2015-11-193-110/+114
| | | | | | | This is mostly indenting and spacing changes. Also, remove some unnecessary static decls instead of bothering to reindent them. * src/module.h (EMACS_EXTERN_C_BEGIN): Remove, and do this inline, as most other Emacs files do for this sort of thing.
* Minor improvements in modules testing MakefileEli Zaretskii2015-11-191-4/+16
| | | | | | * modules/mod-test/Makefile (EMACS, SO): New variables. (CFLAGS): When SO = dll, don't use -fPIC. (check): New target, runs the test.
* Migrate modules/.gitignore into .gitignorePaul Eggert2015-11-191-8/+0
| | | | | * .gitignore: Add former contents of modules/.gitignore. * modules/.gitignore: Remove.
* Add copyright notices to module codePaul Eggert2015-11-194-3/+75
| | | | Put them in the usual format for GNU Emacs copyright notices.
* Rename emacs_module.h to module.hPaul Eggert2015-11-192-2/+2
| | | | | * src/module.h: Rename from src/emacs_module.h. All uses changed.
* Add dynamic module test and helper scriptAurélien Aptel2015-11-185-0/+546
Add 'modhelp.py' script (python2) to automate module testing and module generation. To build and test all modules in the modules/ dir $ ./modhelp.py test To generate a module from template code (good starting point) $ ./modhelp init mynewtestmodule See the script -h option for more documentation. * modules/modhelp.py: New module helper script. * modules/mod-test/Makefile: New file. Makefile for the test module. * modules/mod-test/mod-test.c: New file. Test module source file. * modules/mod-test/test.el: New file. ert test suite for the test module. * modules/.gitignore: New file. Local .gitignore file. Co-authored-by: Philipp Stephani <phst@google.com>