Jan Nieuwenhuizen
b200366f27
mes: Unify mlibc-gcc and mes builds.
...
* make.scm (bin.gcc): Remove stray slash.
* src/mes.c: Unify mlibc-gcc and mes builds.
(gc_init_cells):
(gc_init_news):
(bload_env):
* src/reader.c (reader_read_character):
(reader_read_string):
2018-04-13 08:18:19 +02:00
Jan Nieuwenhuizen
3dc72ce20d
core: Remove local variables from gc.
...
* src/gc.c (gl_loop): Remove local variables.
2018-04-12 21:33:38 +02:00
Jan Nieuwenhuizen
a342791f2b
core: Listen to MES_SAFETY environment variable.
2018-04-12 07:08:09 +02:00
Jan Nieuwenhuizen
1bc4bc7894
core: Remove local variables from eval/apply.
...
* src/mes.c (eval_apply): Move all variables to global scope.
2018-04-12 07:07:24 +02:00
Jan Nieuwenhuizen
9b9a27b743
core: Remove MesCC reminder.
2018-04-12 07:06:40 +02:00
Jan Nieuwenhuizen
5b30d234cb
core: Update default memory settings.
...
* src/mes.c (MAX_ARENA_SIZE)[__MESC__]: Set to maximum 172100000.
2018-04-11 20:46:06 +02:00
Jan Nieuwenhuizen
b65e57be31
core: Tune debug printing.
...
* src/mes.c: Tune debug printing.
* src/gc.c: Likewise.
* module/mes/guile.mes: Likewise.
* HACKING: Describe it.
2018-04-09 07:12:38 +02:00
Jan Nieuwenhuizen
72fc46a572
core: Rewrite reader to create less garbage.
...
* src/reader.c (reader_read_line_comment): Rename from read_line_comment.
(reader_identifier_p): New function.
(reader_end_of_word_p): New function.
(reader_read_identifier_or_number): New function.
(reader_read_sexp_): Rewrite. Update callers.
(reader_read_list): Rewrite.
(reader_lookup_): Remove.
2018-04-09 08:41:30 +02:00
Jan Nieuwenhuizen
45e347588c
core: Rewrite string reader.
...
* src/reader.c (reader_read_string): Rewrite, create much less
garbage.
(append_char): Remove.
2018-04-08 23:14:45 +02:00
Jan Nieuwenhuizen
ad135d3752
doc: Release udpate.
...
* HACKING: Update.
* INSTALL: Update.
* NEWS: Update.
* README: Update.
* doc/ANNOUNCE-0.12: New file.
* throughout: (janneke) coming out.
2017-11-21 19:22:26 +01:00
Jan Nieuwenhuizen
20f66238c5
core: Workaround for mescc.
...
* src/mes.c (eval_apply)[__MESC__]: Add reminder for macro_p, global_p.
2018-04-08 07:50:12 +02:00
Jan Nieuwenhuizen
c4b0879bc9
mes: Allow tick as part of identifier.
...
* src/reader.c (reader_read_sexp_): Do not treat tick as special.
2018-04-07 13:36:23 +02:00
Jan Nieuwenhuizen
da724cdaa1
Revert "core: Add member."
...
This reverts commit 921686a0a3b06281f1804d04e6d4a0344dda507a.
2018-04-07 13:15:26 +02:00
Jan Nieuwenhuizen
f33d23bca1
core: Add member.
...
* src/lib.c (member): New function.
* module/mes/scm.mes (member): Remove.
2018-04-07 12:18:50 +02:00
Jan Nieuwenhuizen
6932d83d82
mes: Add setenv.
...
* src/posix.c (setenv_): New function.
* tests/base.test ("setenv, getenv"): Test it.
2018-04-07 09:34:02 +02:00
Jan Nieuwenhuizen
b5c2bdec00
core: Cleanup reader.
...
* src/reader.c (reader_read_sexp_): Rename from reader_read_word_. Cleanup.
(read_hash): Cleanup.
2018-04-05 22:41:53 +02:00
Jan Nieuwenhuizen
35bb5869f9
mes: Cleanup formatting.
2018-04-05 21:35:31 +02:00
Jan Nieuwenhuizen
0a4030838c
core: Add equal2?.
...
* src/lib.c (equal2_p): New function.
* module/mes/base.mes (equal2?): Remove.
2018-04-05 20:01:04 +02:00
Jan Nieuwenhuizen
6a9621ebf3
core: Add memq.
...
* lib/mes.c (memq): New function.
* module/mes/scm.mes (memq): Remove.
2018-04-05 11:03:09 +02:00
Jan Nieuwenhuizen
9fc27ee25a
mes: Single environment lookup for variables, SICP chapter 3.
...
* src/mes.c (t): Add TVARIABLE.
(scm_vm_eval_deref): New vm special.
(make_vref_): New internal function.
(eval_apply): WIP: replace symbols with their variable reference.
* src/gc.c (gc_loop): Handle TVARIABLE.
* src/lib.c (display_helper): Handle TVARIABLE.
* module/mes/type-0.mes (<cell:variable>): New variable.
(cell:type-alist): Add it.
(variable?): New function.
* module/mes/display.mes (display): Handle <variable>.
2017-12-09 08:33:50 +01:00
Jan Nieuwenhuizen
d1444ead65
core: Remove override hook for read-input-file.
...
* src/reader.c (read_input_file_env): Remove override hook for
read-input-file.
2018-04-03 07:45:12 +02:00
Jan Nieuwenhuizen
4c9690996c
mes: Iterative recursive macro expand.
...
* src/mes.c (eval_apply): Iterative recursive macro expand.
* src/posix.c (set_current_input_port): Return previous port.
* module/mes/catch.mes (%eh): Use core:display.
* module/mes/display.mes (display-cut, display-cut2): Move macro
definitions to toplevel.
2018-03-04 10:05:55 +01:00
Jan Nieuwenhuizen
459e4f6a57
mes: Boot from MES_BOOT, boot-0.scm.
...
* src/mes.c (load_env): Softcode loading of boot-0.scm from
environment variabl MES_BOOT.
* module/mes/boot-00.scm: New file.
* module/mes/boot-01.scm: New file.
* module/mes/boot-0.scm: Rename from read-0.mes.
* module/mes/module.mes: New file.
2018-02-03 21:43:52 +01:00
Jan Nieuwenhuizen
f077364bce
mes: reader: reader_ prefix; read/write char/string in core.
...
* src/posix.c (peek_char, read_char, read_string, unread_char, write_char): New function.
* src/reader.c: Use reader_ prefix.
r# bootstrappable.org
2018-01-06 07:58:23 +01:00
Jan Nieuwenhuizen
91070593e9
mes: More informative error reporting for number asserts.
...
* src/math.c (assert_number): New function. Update assert () users.
2018-01-25 07:00:48 +01:00
Jan Nieuwenhuizen
d176d1bf6c
core: Display and write string and char compliance.
...
* src/lib.c (display_helper): Display and write char and string compliance.
2018-01-22 23:45:46 +01:00
Jan Nieuwenhuizen
5a7db9749d
mes: display: Support keyword.
...
* src/lib.c (display_helper): Support keyword.
2018-02-03 21:57:30 +01:00
Jan Nieuwenhuizen
3161f039b2
mes: display: vector.
...
* src/lib.c (display_helper): Display vector.
2018-01-12 18:24:42 +01:00
Jan Nieuwenhuizen
63e8b49d9e
mes: display: closure names.
...
* src/lib.c (display_helper): Display closure names.
2018-01-14 09:11:19 +01:00
Jan Nieuwenhuizen
7b8f69972e
mes: Rename make-vector to core:make-vector.
...
* src/vector.c (make_vector_): Rename from make_vector. Update callers.
2018-01-07 16:26:36 +01:00
Jan Nieuwenhuizen
a5ede4d4d6
mes: Better error reporting.
...
* src/lib.c (write_error_): New function.
* src/mes.c (error, check_apply): Use it.
(append2, set_car_x): Upon error, call error (WAS: assert).
2018-01-07 16:08:11 +01:00
Jan Nieuwenhuizen
81404179c1
mes: Add write, core:write.
...
* src/lib.c (display_helper, fdisplay_): Add parameter, write_p.
Update callers. When write_p: write quoted strings.
(write_, write_port_): New function.
* module/mes/read-0.mes (write): New function.
2018-01-01 21:10:15 +01:00
Jan Nieuwenhuizen
c092aeb7f7
mes: gc_safety.
2018-01-01 20:00:06 +01:00
Jan Nieuwenhuizen
08562b168d
test: Add syntax tests.
...
* tests/syntax.test: New file.
* tests/syntax.test-guile: New file.
fixup: 1b0696f9 (Jan Nieuwenhuizen 2018-01-01 15:53:13 +0100 40) , (lambda ()
2018-01-01 15:53:13 +01:00
Jan Nieuwenhuizen
562d91466c
Revert "mes: use array-based stack. WIP: will not survice gc."
...
This reverts commit 7fb653f68c2dbf8bc83cce4bd138439c600b538f.
2017-12-17 07:42:49 +01:00
Jan Nieuwenhuizen
da20d92c77
mes: use array-based stack. WIP: will not survice gc.
...
* src/mes.c (STACK_SIZE)[MES_ARRAY_STACK]: New variable.
(g_stack_array): New variable.
(g_stack): Change type to SCM*.
* (gc_push_frame)[MES_ARRAY_STACK]: Use g_stack_array, g_stack.
(gc_peek_frame): Likewise.
(gc_pop_frame): Likewise.
* src/gc.c (gc_check): Likewise.
(gc): Likewise.
2017-12-14 07:05:53 +01:00
Jan Nieuwenhuizen
90249f595f
mes: Fix assq to improve performance.
...
* src/mes.c (assq): Special case eq_p to improve performance.
2017-12-12 20:25:48 +01:00
Jan Nieuwenhuizen
eb0505300c
mes: Fix display of closure.
...
* module/mes/display.mes (display): Drop extra ( at start of *closure*, *circ*.
* src/lib.c (display_helper): Likewise.
2017-12-11 07:06:21 +01:00
Jan Nieuwenhuizen
30efe5ffbc
mes: Resurrect define, define-macro in C core.
...
* make.scm (bin.gcc, bin.mescc): Use MES_C_READER=1.
* src/mes.c (scm_symbol_define, scm_symbol_define_macro): New symbol.
(scm_vm_eval_define): New special.
(scm_symbol_c_define): New symbol.
(MAKE_MACRO): New define.
(eval_apply)[MES_C_DEFINE]: Handle define, define-macro.
(mes_symbols): Define %c-define for use in read-0.mes.
* module/mes/read-0.mes: Do not implement full scheme define if %c-define.
* module/mes/quasiquote.mes (sexp:define, env:define, env:macro): New function.
(define-macro): New macro. FIXME
* module/mes/psyntax.mes (define): New macro. FIXME
2017-12-09 08:24:38 +01:00
Jan Nieuwenhuizen
aec2f68118
mes: Fix compile warning in reader.
...
* src/reader.c[MES_C_READER]: Declare read_block_comment, read_hash.
Fixes compile warning.
2017-12-11 04:52:00 +01:00
Jan Nieuwenhuizen
a2f6511f5e
mescc: Allow invoking git mescc.mes from elsewhere.
...
* src/mes.c (load_env): Look in MES_PREFIX too. Add debug printing.
* scripts/mescc.mes: Consider MES_PREFIX.
* guile/mescc.scm (%prefix): Consider MES_PREFIX.
* module/mes/base-0.mes (string->list): New function, move from type-0.mes.
(%moduledir): Consider MES_PREFIX.
* module/mes/type-0.mes (string->list): Remove.
2017-12-09 22:38:51 +01:00
Jan Nieuwenhuizen
ccddde9a84
mescc: Output performance hacks: use core:display.
...
* src/lib.c (display_): Write to g_stdout (WAS: STDOUT).
* module/mes/guile.scm (guile): Declare and export core:display core:display-error.
* module/mes/M1.mes (object->M1): Use core:display and string-append
instead of format.
* module/mes/guile.mes (with-input-from-string): Add debugging.
(open-input-string): Likewise.
(read-string): Likewise. Re-implement.
(drain-input): Use read-string.
2017-12-09 20:10:57 +01:00
Jan Nieuwenhuizen
85b5422c35
mes: Nyacc support: Read old characters.
...
* src/reader.c (read_character)[MES_C_READER]: Support reading old
characters: #\bel, #\bs, #\vt.
2017-12-09 22:36:53 +01:00
Jan Nieuwenhuizen
18b57b68aa
mes: resurrect running MesCC: handle \t in strings.
...
* src/reader.c (read-string): Handle \t. Fixex M1 output.
2017-12-09 19:33:10 +01:00
Jan Nieuwenhuizen
808af5001f
mlibc: New library layout; remove duplication.
...
* lib/libc+tcc-gcc.c: New file: Libc bits for GCC from libc-mes+tcc.c.
* lib/libc+tcc-mes.c: New file: Libc bits for MesCC from libc-mes+tcc.c.
* lib/libc+tcc.c: New file: Libc bits from libc-mes+tcc.c.
* lib/libc.c: New file: Merged from libc-mes.c, libc-gcc.c.
(abtoi): New function: Rename from _atoi.
* lib/linux+tcc-gcc.c: New file: Linux bits from libc-gcc+tcc.c.
* lib/linux+tcc-mes.c: New file: Linux bits from libc-mes+tcc.c.
* lib/linux-gcc.c: New file: Linux bits from libc-gcc.c.
* lib/linux-mes.c: New file: Linux bits from libc-mes.c.
* lib/mini-libc-gcc.c: New file.
* lib/mini-libc.c: New file: Libc bits from mini-libc-mes.c.
* lib/mini-linux-gcc.c: New file.
* lib/mini-linux-mes.c: New file: Linux bits from mini-libc-mes.c.
* lib/libc-gcc.c: Remove duplication using include now.
* lib/libc-mes.c: Likewise.
* lib/mini-libc-mes.c: Likewise.
* include/stdio.h (puts)[POSIX]: Remomve macro.
(fputc, fputs)[!POSIX]: New macro.
(fputc, fputs): Remove declaration.
* scaffold/tests/7j-strtoull.c (strtoull, test): Use abtoi.
* src/lib.c (fputs)[__MESC__]: Remove define.
* guile/guix/make.scm: Update for new library layout.
* make.scm: Likewise.
* build.sh: Likewise.
* install.sh: Likewise.
2017-12-03 13:56:21 +01:00
Jan Nieuwenhuizen
c3fdfedb20
mes: resurrect full reader in C core.
...
* module/mes/read-0.mes (defined?): New function.
(eat-whitespace, read-env, read-word, read-block-comment,
read-line-comment, read-list, read-character, read-hex, read-octal,
reader:read-string, lookup, read-hash, read-word): Only define if
not %c-reader.
* module/mes/base-0.mes (defined?): Remove.
* src/mes.c[MES_C_READER]: Set ARENA_SIZE=10000000.
(scm_symbol_quasiquote scm_symbol_unquote,
scm_symbol_unquote_splicing, scm_symbol_syntax,
scm_symbol_quasisyntax, scm_symbol_unsyntax,
scm_symbol_unsyntax_splicing): New symbol.
(scm_symbol_c_reader): New symbol.
(MAKE_KEYWORD)[MES_C_READER]: New define.
(mes_symbols): Define %c_reader.
* src/reader.c (read_word_)[MES_C_READER]: Extend to full Scheme
reader.
(eat_whitespace)[MES_C_READER]: Likewise.
(read_block_comment, read_hash, read_word, read_character,
read_octal, read_hex, append_char, read_string)[MES_C_READER]:
Likewise.
* make.scm (bin.gcc,bin.mescc): Define MES_C_READER=1.
2017-11-29 21:42:50 +01:00
Jan Nieuwenhuizen
efdae700b5
bootstrap: Unbundle necessary M1 sources.
...
* mlibc/crt1.M1: Remove.
* mlibc/libc-mes.M1: Remove.
* src/mes.M1: Remove.
2017-11-20 06:47:46 +01:00
Jan Nieuwenhuizen
35b1be535a
bootstrap: Update necessary M1 sources.
...
M1 -f stage0/x86.M1 -f mlibc/crt1.M1 --LittleEndian --Architecture=1 > mlibc/crt1.hex2
M1 -f stage0/x86.M1 -f mlibc/mini-libc-mes.M1 --LittleEndian --Architecture=1 > mlibc/libc-mes.hex2
M1 -f stage0/x86.M1 -f src/mes.M1 --LittleEndian --Architecture=1 > src/mes.hex2
hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f stage0/elf32-header.hex2 -f mlibc/crt1.hex2 -f mlibc/libc-mes.hex2 -f src/mes.hex2 -f stage0/elf32-footer-single-main.hex2 > src/mes-mes
exec_enable src/mes-mes
* mlibc/libc-mes.M1: Update.
* src/mes.M1: Udate.
2017-11-18 12:14:07 +01:00
Jan Nieuwenhuizen
6c55f4bd28
bootstrap: Include necessary M1 sources.
...
M1 -f stage0/x86.M1 -f mlibc/crt1.M1 --LittleEndian --Architecture=1 > mlibc/crt1.hex2
M1 -f stage0/x86.M1 -f mlibc/mini-libc-mes.M1 --LittleEndian --Architecture=1 > mlibc/libc-mes.hex2
M1 -f stage0/x86.M1 -f src/mes.M1 --LittleEndian --Architecture=1 > src/mes.hex2
hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f stage0/elf32-header.hex2 -f mlibc/crt1.hex2 -f mlibc/libc-mes.hex2 -f src/mes.hex2 -f stage0/elf32-footer-single-main.hex2 > src/mes-mes
exec_enable src/mes-mes
* mlibc/crt1.M1: New File.
* mlibc/libc-mes.M1: New File.
* src/mes.M1: New File.
2017-09-10 21:17:17 +02:00
Jan Nieuwenhuizen
4175579d08
core: Add logand, lognot.
...
* src/math.c (logand, lognot): New function.
2017-08-27 12:53:01 +02:00