Commit graph

2230 commits

Author SHA1 Message Date
Gabriel Wicki 7b993b35b9
core: Remove code duplication.
* src/gc.c (copy_news): Remove copy of copy_cell.
(gc_copy): Use copy_cell instead.
2022-05-13 08:27:57 +02:00
Gabriel Wicki c7777121e8
core: Remove code duplication.
* src/gc.c (news_bytes): Remove copy of cell_bytes.
(gc_copy): Use cell_bytes instead.
* include/mes/mes.h (news_bytes): Remove prototype.
2022-05-13 08:27:56 +02:00
Jan (janneke) Nieuwenhuizen 810451c76b
build: Add publish-local.
* build-aux/GNUmakefile.in (publish-local): New target.
2022-05-13 08:27:56 +02:00
Jan (janneke) Nieuwenhuizen 6301625cf6
doc: Update `README'.
* README: Update to mention Further Reduced Binary Seed bootstrap.
2022-05-13 08:27:50 +02:00
Dor Askayo ce54ccc2c0
Fix definition of S_ISUID.
* include/sys/stat.h (S_ISUID: Append missing zero.
2022-05-09 07:01:01 +02:00
Jan (janneke) Nieuwenhuizen f785f8d560
build: Fix --with-bootstrap build.
Reported by Vagrant Cascadian <vagrant@debian.org>.

* build-aux/build.sh.in: Before building mes using mescc, in bootstrap
mode, remove globals.o built for lib.
2022-05-06 12:27:46 +02:00
Jan (janneke) Nieuwenhuizen 1c2a504cee
doc: Post-release update.
* doc/announce/ANNOUNCE-0.24: Add gen-announce checksums.
* build-aux/GNUmakefile.in (--previous-version): Update to 0.24.  Add
bug-mes to release announce.
2022-05-06 12:26:55 +02:00
Jan (janneke) Nieuwenhuizen 745017584a
guix: mes: Update to 0.24.
* guix/git/mes.scm (mes)[source]: Update to 0.24.
2022-05-02 18:54:33 +02:00
Jan (janneke) Nieuwenhuizen a36eb013f8
build: Release 0.24.
* configure (VERSION): Bump to 0.24.
* configure.sh (VERSION): Likewise.
* build-aux/GNUmakefile.in (gen-announce): Update previous-version to
0.23.
* mes/module/mes/repl.mes (welcome): Update copyright years.
2022-04-30 16:14:55 +02:00
Jan (janneke) Nieuwenhuizen 1cb3b51625
doc: Update `ROADMAP'.
* ROADMAP (release 0.x, unsorted): Move done item...
(DONE): ...here.
2022-05-01 23:44:34 +02:00
Jan (janneke) Nieuwenhuizen bf5b6a9052
doc: Add `ANNOUNCE-0.24'.
* doc/announce/ANNOUNCE-0.24: New file.
2022-05-01 22:49:51 +02:00
Jan (janneke) Nieuwenhuizen 2aced313c7
doc: Update `NEWS'.
* NEWS (Changes in 0.24 since 0.23): New section.
2022-04-30 16:02:01 +02:00
Jan (janneke) Nieuwenhuizen 76755d6be6
doc: Update `README'.
* README: Mention Mes can be bootstrapped using M2-Planet.
Mention Full Source Bootstrap sponsoring by NlNet.
2019-11-03 16:30:45 +01:00
Jan (janneke) Nieuwenhuizen c82c8da8ed
doc: Update 'AUTHORS'.
* AUTHORS: Mention Jeremiah Orians as co-author on ELF heanders and
mention M2-Planet imports.  Mention bug fixes by W.J. van der Laan.
2021-01-02 13:45:00 +01:00
Jan (janneke) Nieuwenhuizen d4589b6f0d
doc: Update Guix bootstrap status.
* doc/mes.texi (Bootstrappable Builds): Add reference to Guix.
(Reduced Binary Seed Bootstrap): Add node and section header.
(Scheme-only Bootsrap): New section.
(Full Source Bootstrap): Add node and section header.  Some updates.
(Stage0): Add node and section header.
(M2-Planet): New section.
(The Mes Bootstrap Process): Fix typos, update to current Guix reduced
binary seed bootstrap status.
* doc/images/gcc-mesboot-graph.dot: Regenerate.
2022-04-30 12:31:57 +02:00
Jan (janneke) Nieuwenhuizen 28a828ff4d
doc: Update dependencies, add M2-Planet.
* INSTALL (Other GNU/Linux): Update mescc-tools requirement, mention
M2-Planet.
(Prerequisites): Likewise.
* doc/mes.texi (Regular Requirements): Likewise.  Rename to...
(Requirements): ...this.
(Bootstrap Requirements): Likewise.
(Building from Git): Mention dependencies on GNU Texinfo, GNU help2man,
graphviz, and perl.
2022-04-30 11:12:48 +02:00
Jan (janneke) Nieuwenhuizen 796dc2dc39
doc: Use guix shell' instead of guix environment'.
* HACKING (SETUP): Use `guix shell' instead of `guix environment'.
* INSTALL (Guix): Likewise.
* PORTING (Setup environment): Likewise.
* doc/mes.texi (Building from Git): Likewise.
* simple.sh: Likewise.
* guix.scm: Likewise.  Add time-machine with working commit.
2022-04-30 09:44:57 +02:00
Jan (janneke) Nieuwenhuizen f71e333d61
build: Simple signature check for dist and release.
* build-aux/GNUmakefile.in (check-signature): New target.
(dist, release): Depend on it.
2022-05-02 11:37:27 +02:00
Jan (janneke) Nieuwenhuizen 8f36311d1f
build: Add `sum-announce' target.
* build-aux/GNUmakefile.in (sum-announce): New target.
(release): Check signature on release commit.
2022-05-02 11:24:06 +02:00
Jan (janneke) Nieuwenhuizen d1297688a8
ARM: build: Cater for M2-Planet.
* include/linux/arm/syscall.h: Add support for M2-Planet.
* lib/linux/arm-mes-m2/_exit.c,
lib/linux/arm-mes-m2/_write.c,
lib/linux/arm-mes-m2/crt1.M1,
lib/linux/arm-mes-m2/crt1.c,
lib/linux/arm-mes-m2/syscall.c,
lib/m2/arm/ELF-arm.hex2,
lib/m2/arm/arm_defs.M1: New files.
* build-aux/build.sh.in: Also allow kaem build for ARM.
2022-04-30 22:51:42 +02:00
Jan (janneke) Nieuwenhuizen 739ed40f5f
guix: m2-planet: Update to 1.9.0.
* guix/git/mes.scm (m2-planet)[source]: Update to 1.9.0.
2022-05-01 13:58:48 +02:00
Jan (janneke) Nieuwenhuizen df69a74ea9
build: Depend on M2-Planet-1.9.0.
* configure (main): Bump M2-Planet version to 1.8.0.
2022-04-30 22:42:55 +02:00
Jan (janneke) Nieuwenhuizen 79da3fc3e2
guix: mescc-tools: Update to 1.4.0
* gnu/packages/mes.scm (m2-planet): Update to 1.4.0.
[native-inputs]: Add which.
[argument]: Remove patch-prefix stage.
2022-05-01 23:04:03 +02:00
Jan (janneke) Nieuwenhuizen aa128eaa92
build: Depend on mescc-tools 1.4.0.
* configure (main): Check for hex2, M1 1.4.0, and blood-elf 2.0.0.
* module/mescc/mescc.scm (M1->blood-elf): Use --little-endian with blood-elf call.
* kaem.run,
scaffold/argv.kaem,
scaffold/global-array.kaem,
scaffold/hello.kaem,
scaffold/local-array.kaem,
scaffold/local-static-array.kaem,
scaffold/main.kaem,
scaffold/read.kaem,
simple.make: Likewise.
2022-05-02 07:46:01 +02:00
Jan (janneke) Nieuwenhuizen d0e5f812f3
guix: m2-planet: Update to 1.8.0.
* guix/git/mes.scm (m2-planet)[source]: Update to 1.8.0.
[arguments]: Remove patch-prefix stage.
[home-page]: Fix.
2022-04-30 08:51:35 +02:00
Jan (janneke) Nieuwenhuizen 93254bac8b
build: Depend on M2-Planet-1.8.0.
* configure (main): Bump M2-Planet version to 1.8.0.
* kaem.run,
scaffold/argv.kaem,
scaffold/global-array.kaem,
scaffold/hello.kaem,
scaffold/local-array.kaem,
scaffold/local-static-array.kaem,
scaffold/main.kaem,
scaffold/read.kaem:: Use M2-Planet --bootstrap-mode.
* build-aux/build-scaffold.sh: Remove obsolete --exec_enable.
2022-04-30 10:17:23 +02:00
Jan (janneke) Nieuwenhuizen 22f24be26a
guix: Update package inputs to new style.
* guix/git/mes.scm (m2-planet)[native-inputs]: Use simple list.
* guix/git/mes.scm (nyacc-0.99): Likewise.
[inputs]: Use simple list.
(nyacc): Likewise.
(mes)[propagated-inputs]: Use simple list.
[native-inputs]: Use list instead of alist.
[native-search-paths]: New field.
2022-04-30 09:15:24 +02:00
Jan (janneke) Nieuwenhuizen c45bd1bdd6
Mes C Library: memchr: Avoid compile warning.
* lib/string/memchr.c (memchr): Cast return to void*.
2022-04-30 16:40:57 +02:00
Jan (janneke) Nieuwenhuizen 8920f558c6
core: Fix FRAME_SIZE conflict.
This avoids conflicting with FRAME_SIZE from signal.h.

* include/mes/constants.h (FRAME_SIZE): Rename to...
(GC_FRAME_SIZE): ...this.
(FRAME_PROCEDURE): Rename to...
(GC_FRAME_PROCEDURE): ...this.
* src/eval-apply.c (eval_apply): Update accordingly.
* src/gc.c (gc_push_frame, gc_peek_frame, gc_pop_frame): Update accordingly.
* src/stack.c (make_frame, make_stack): Update accordingly.
2021-05-16 13:27:12 +02:00
Jan (janneke) Nieuwenhuizen 72e371d77f
core: Resurrect gcc-10 support.
* include/mes/mes.h (g_datadir, g_debug, g_buf, g_continuations,
g_symbols, g_symbol_max, g_mini, R0, R1, R2, R3, M0, g_macros, g_ports,
ARENA_SIZE, MAX_ARENA_SIZE, STACK_SIZE, JAM_SIZE, GC_SAFETY, MAX_STRING,
g_arena, cell_arena, cell_zero, g_free, g_symbol, g_stack_array,
g_cells, g_news, g_stack, gc_count, gc_start_time, gc_end_time, gc_time,
__execl_c_argv, __open_boot_buf, __open_boot_file_name, __setenv_buf,
__reader_read_char_buf, g_start_time, __gettimeofday_time,
__get_internal_run_time_ts): Declare extern.
* include/mes/symbols.h ( cell_nil, cell_f, cell_t, cell_dot,
cell_arrow, cell_undefined, cell_unspecified, cell_closure,
cell_circular, cell_vm_apply, cell_vm_apply2, cell_vm_begin,
cell_vm_begin_eval, cell_vm_begin_expand, cell_vm_begin_expand_eval,
cell_vm_begin_expand_macro, cell_vm_begin_expand_primitive_load,
cell_vm_begin_primitive_load, cell_vm_begin_read_input_file,
cell_vm_call_with_current_continuation2, cell_vm_call_with_values2,
cell_vm_eval, cell_vm_eval2, cell_vm_eval_check_func,
cell_vm_eval_define, cell_vm_eval_macro_expand_eval,
cell_vm_eval_macro_expand_expand, cell_vm_eval_pmatch_car,
cell_vm_eval_pmatch_cdr, cell_vm_eval_set_x, cell_vm_evlis,
cell_vm_evlis2, cell_vm_evlis3, cell_vm_if, cell_vm_if_expr,
cell_vm_macro_expand, cell_vm_macro_expand_car,
cell_vm_macro_expand_cdr, cell_vm_macro_expand_define,
cell_vm_macro_expand_define_macro, cell_vm_macro_expand_lambda,
cell_vm_macro_expand_set_x, cell_vm_return, cell_symbol_lambda,
cell_symbol_begin, cell_symbol_if, cell_symbol_quote,
cell_symbol_define, cell_symbol_define_macro, cell_symbol_quasiquote,
cell_symbol_unquote, cell_symbol_unquote_splicing, cell_symbol_syntax,
cell_symbol_quasisyntax, cell_symbol_unsyntax,
cell_symbol_unsyntax_splicing, cell_symbol_set_x, cell_symbol_sc_expand,
cell_symbol_macro_expand, cell_symbol_portable_macro_expand,
cell_symbol_sc_expander_alist, cell_symbol_call_with_values,
cell_symbol_call_with_current_continuation, cell_symbol_boot_module,
cell_symbol_current_module, cell_symbol_primitive_load, cell_symbol_car,
cell_symbol_cdr, cell_symbol_not_a_number, cell_symbol_not_a_pair,
cell_symbol_system_error, cell_symbol_throw,
cell_symbol_unbound_variable, cell_symbol_wrong_number_of_args,
cell_symbol_wrong_type_arg, cell_symbol_buckets, cell_symbol_builtin,
cell_symbol_frame, cell_symbol_hashq_table, cell_symbol_module,
cell_symbol_procedure, cell_symbol_record_type, cell_symbol_size,
cell_symbol_stack, cell_symbol_argv, cell_symbol_mes_datadir,
cell_symbol_mes_version, cell_symbol_internal_time_units_per_second,
cell_symbol_compiler, cell_symbol_arch, cell_symbol_pmatch_car,
cell_symbol_pmatch_cdr, cell_type_bytes, cell_type_char,
cell_type_closure, cell_type_continuation, cell_type_function,
cell_type_keyword, cell_type_macro, cell_type_number, cell_type_pair,
cell_type_port, cell_type_ref, cell_type_special, cell_type_string,
cell_type_struct, cell_type_symbol, cell_type_values,
cell_type_variable, cell_type_vector, cell_type_broken_heart,
cell_symbol_program, cell_symbol_test): Likewise.
* src/globals.c: New file.
* build-aux/configure-lib.sh (mes_SOURCES): Add it.
2021-05-02 14:58:23 +02:00
Jan (janneke) Nieuwenhuizen c18f2c0c89
guix: m2-planet: Update to 1.7.0-32-gaa3472b.
This adds support for skipping "extern".

* guix/git/mes.scm (m2-planet)[source]: Update to 1.7.0-32-gaa3472b.
2021-05-02 15:52:04 +02:00
Jan (janneke) Nieuwenhuizen 4ca839a064
scaffold: Add local-static-array.c.
GCC gives

    12:35:54 janneke@dundal:~/src/mes/wip-m2 [env]
    $ gcc scaffold/local-static-array.c
    12:36:01 janneke@dundal:~/src/mes/wip-m2 [env]
    $ ./a.out
    hello local static
    hello local static
    12:36:04 janneke@dundal:~/src/mes/wip-m2 [env]

M2-Planet gives

    12:36:04 janneke@dundal:~/src/mes/wip-m2 [env]
    $ kaem --verbose --strict --file scaffold/local-static-array.kaem
     +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/local-static-array.c -o scaffold/local-static-array.M1
    scaffold/local-static-array.c:29:static is not a defined symbol
    Subprocess error 256
    ABORTING HARD
    [1]12:36:07 janneke@dundal:~/src/mes/wip-m2 [env]

* scaffold/local-static-array.c: New file.
* scaffold/local-static-array.kaem: New file.
2021-01-09 12:35:22 +01:00
Jan (janneke) Nieuwenhuizen 9ddb4389f1
scaffold: Add local-array.c.
GCC gives

    12:32:06 janneke@dundal:~/src/mes/wip-m2 [env]
    $ gcc scaffold/local-array.c
    12:34:27 janneke@dundal:~/src/mes/wip-m2 [env]
    $ ./a.out
    hello local
    12:34:31 janneke@dundal:~/src/mes/wip-m2 [env]

M2-Planet gives

    12:34:31 janneke@dundal:~/src/mes/wip-m2 [env]
    $ kaem --verbose --strict --file scaffold/local-array.kaem
     +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/local-array.c -o scaffold/local-array.M1
    scaffold/local-array.c:29:ERROR in collect_local
    Missing ;
    Subprocess error 256
    ABORTING HARD
    [1]12:34:42 janneke@dundal:~/src/mes/wip-m2 [env]

* scaffold/local-array.c: New file.
* scaffold/local-array.kaem: New file.
2021-01-09 12:33:26 +01:00
Jan (janneke) Nieuwenhuizen e6bfaae273
scaffold: Add global-array.c.
GCC gives

    12:30:45 janneke@dundal:~/src/mes/wip-m2 [env]
    $ gcc scaffold/global-array.c
    12:31:53 janneke@dundal:~/src/mes/wip-m2 [env]
    $ ./a.out
    hello global
    12:31:54 janneke@dundal:~/src/mes/wip-m2 [env]

M2-Planet gives

    12:31:54 janneke@dundal:~/src/mes/wip-m2 [env]
    $ kaem --verbose --strict --file scaffold/global-array.kaem
     +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/global-array.c -o scaffold/global-array.M1
    scaffold/global-array.c:20:Received [ in program
    Subprocess error 256
    ABORTING HARD
    [1]12:32:06 janneke@dundal:~/src/mes/wip-m2 [env]

* scaffold/global-array.c: New file.
* scaffold/global-array.kaem: New file.
2021-01-09 12:30:59 +01:00
Jan (janneke) Nieuwenhuizen ac0960f5e0
doc: Add test hints to `HACKING'.
* HACKING (TESTING): New section.
2021-01-01 11:58:36 +01:00
Jan (janneke) Nieuwenhuizen 9c2ba4829c
Revert "Mes C Library: m2/execve.c: Remove specialization."
This fixes

    gcc-lib/libc+gnu.c: At top level:
    gcc-lib/libc+gnu.c:2694:1: error: conflicting types for ‘execve’
     execve (char const *file_name, char **argv, char **env)
     ^~~~~~
    In file included from gcc-lib/libc+gnu.c:492:0:
    include/unistd.h:66:5: note: previous declaration of ‘execve’ was here
     int execve (char const *file, char *const argv[], char *const env[]);
         ^~~~~~

This reverts commit 828c27a073896facdc3a3b24265ee69f0033f58f.
2021-01-02 10:00:35 +01:00
Jan (janneke) Nieuwenhuizen 99fbb9b2e5
bootstrap: Update M2-Planet x86 definitions from 1.7.0-31-g358b6cf.
* lib/m2/x86/x86_defs.M1: Update.
2021-01-01 19:07:22 +01:00
Jan (janneke) Nieuwenhuizen 4a77600868
guix: m2-planet: Update to 1.7.0-31-g358b6cf.
* guix/git/mes.scm (m2-planet)[source]: Update to 1.7.0-31-g358b6cf.
2021-01-01 18:53:07 +01:00
Jan (janneke) Nieuwenhuizen c881e18dae
Revert "Mes C Library: m2/getcwd.c: Remove specialization."
This reverts commit 37f44ce9453ef5589b1336c981360de16c154999.
2021-01-01 15:54:13 +01:00
Jan (janneke) Nieuwenhuizen b23c6885a6
core: Move __getcwd_buf to Mes C Library.
* include/mes/mes.h (__getcwd_buf): Move to..
* lib/posix/getcwd.c (__getcwd_buf): ...here.
(getcwd): Refactor.
* src/posix.c (getcwd_): Do not use __getcwd_buf.
2021-01-01 15:43:43 +01:00
Jan (janneke) Nieuwenhuizen 0d337be8ff
bootstrap: Support building with M2-Planet 1.4.
* lib/m2/x86/x86_defs.M1 (NOP): New define.
2021-01-01 11:40:51 +01:00
Jan (janneke) Nieuwenhuizen 348dcbcbd7
mescc: Only use signed division when numerator is signed.
Currently, sign-extension (CLTD vs XOR EDX) and signed division (IDIV vs
DIV) selected by setting "signed?".  See, module/mescc/x86/as.scm.
Possibly we need a signed? based on numerator and denominator, and
add a extend-sign? based on the signedness of the numerator?

* module/mescc/compile.scm (expr->register): Base "signed?" strictly on
signedness of numerator.
2021-01-01 10:31:46 +01:00
Jan (janneke) Nieuwenhuizen fac6a873f7
mescc: Use unsigned type for sizeof expression.
* module/mescc/compile.scm (ast->type): Use unsigned type for sizeof
expression.
2021-01-01 10:30:48 +01:00
Jan (janneke) Nieuwenhuizen da03a384c8
mescc: Respect integer literal type suffixes.
* module/mescc/compile.scm (ast->type): Respect ULL, UL, U, LL, L suffix
on integer literals.
2021-01-01 10:28:24 +01:00
Jan (janneke) Nieuwenhuizen 8f67315eb6
core: Use unsigned constants.
* src/gc.c (FRAME_SIZE, M2_CELL_SIZE): Declare unsigned.
(gc_init): Use unsigned suffixes for divisions.
* src/posix.c (TIME_UNITS_PER_SECOND): Declare unsigned.
(UL1000000000): New constant.
(seconds_and_nanoseconds_to_long): Use it.
* src/gc.c (U10, U100): New constants.
(gc_init): Use them.
2021-01-01 10:24:22 +01:00
Jan (janneke) Nieuwenhuizen b237308f26
core: Use size_t instead of long for gc sizes.
* include/mes/mes.h (ARENA_SIZE, MAX_ARENA_SIZE, STACK_SIZE, JAM_SIZE,
GC_SAFETY, MAX_STRING): Use size_t instead of long.
2021-01-01 09:47:22 +01:00
Jan (janneke) Nieuwenhuizen 1a97f941c3
core: Avoid Floating point exception dividing negative numbers.
* src/posix.c (seconds_and_nanoseconds_to_long): Use unsigned division.
2021-01-01 09:46:20 +01:00
Jan (janneke) Nieuwenhuizen 6a25b8d3aa
core: Avoid Floating point exception dividing negative numbers.
This fixes

    kaem --verbose --strict
    bin/mes-m2 -c '(display (modulo -1 -1))'

* src/math.c (modulo): Use unsigned division.
2021-01-01 09:04:39 +01:00
Jan (janneke) Nieuwenhuizen aac33c44b7
bootstrap: Use ./pre-inst-env mescc default.
* configure.sh: When CC is mescc, M2-Planet or unset, use
"./pre-inst-env mescc" as default.
2021-01-01 08:52:49 +01:00
Jan (janneke) Nieuwenhuizen 99adc7efdc
tests: string-join: Be noisy.
* scaffold/boot/50-string-join.scm ("string-join\n"): Avoid exit 0
without output.
2020-12-30 18:45:18 +01:00