Daniel Kochmański
14e77f4cd4
reader: open-code token-specific version of ecl_push_string_extend
...
This way we make the reader independent of string.d and array.d while still
enabling adjustable token buffers.
2026-03-13 19:23:06 +01:00
Daniel Kochmański
ba3613d976
reader: make token parser installable in the readtable
2026-03-13 19:23:06 +01:00
Daniel Kochmański
b397287dda
reader: merge back readtable.d into read.d and reader.d
2026-03-13 19:23:06 +01:00
Daniel Kochmański
515037a038
reader: store separately macro and a dispatch table
...
This improves code readibility, because dispatch macro characters are built on
top of "normal" macro characters.
2026-03-13 19:23:06 +01:00
Daniel Kochmański
9ab1e5bce3
reader: init_read has now shorter definitions (use macros)
2026-03-13 19:23:06 +01:00
Daniel Kochmański
2bab4d83e5
reader: cosmetic change
2026-03-13 19:23:06 +01:00
Daniel Kochmański
292eab75d8
reader: turn separate parameters into flags in low-level read
...
Instead of passing parameters as values, we make a bitfield:
ECL_READ_LIST_DOT, ECL_READ_RETURN_IGNORABLE, ECL_READ_SUPPRESS,
ECL_READ_ESCAPE_FIST;
this way we don't rely on a dynamic variable in a low-level function.
2026-03-13 19:23:06 +01:00
Daniel Kochmański
09cfa40676
reader: low level functions accept explicit readtable argument
...
Previously the readtable was accessed as a value of a variable *READTABLE*.
2026-03-13 19:23:06 +01:00
Daniel Kochmański
2d9da9ce83
reader: wrap up the escaping and remove kludges
2026-03-13 19:23:06 +01:00
Daniel Kochmański
ab2a464eaf
reader: honor *read-suppress* in #\foo:bar reader
2026-03-13 19:23:06 +01:00
Daniel Kochmański
f9eddb83b2
reader: add new operators and fix found regressions
...
- low limit in escapes was off-by-one
- quoted character immediately after :, like :|foo| did not pare correctly
2026-03-13 19:23:06 +01:00
Daniel Kochmański
a82e7a095f
reader: separate token parsing from token reading
...
Parsing the token ends in a separate file.
2026-03-13 19:23:06 +01:00
Daniel Kochmański
d91c4bc114
reader: use token object to pass tokens prior parsing
2026-03-13 19:23:06 +01:00
Daniel Kochmański
9f54582bda
reader: add a new object to the system ecl_token
...
It represents unparsed token constructed by the reader.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
939a6d87ad
reader: cleanup of mapping over escape intervals
...
This still needs some work, but we remove CONS in favor of flat list of even
number of elements and simplify loops over them.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
b997a03a35
reader: turn ecl_read_token into symbol/number parser
...
First it call ecl_only_read_token and then it parses it.
Fixes #814 .
2026-03-13 19:23:05 +01:00
Daniel Kochmański
2cedabfac8
reader: factor out ecl_read_only_token from ecl_read_token
...
The end goal is to make ecl_read_token become ecl_parse_token and read tokens
only from ecl_read_only_token, to keep Common Lisp -specific processing out of
the token reader.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
53f3576dc4
reader: store escape intervals on a stack
...
To enable access from both sides we store escape intervals in a vector (a
stack). This also fixes #813 .
2026-03-13 19:23:05 +01:00
Daniel Kochmański
1a83e74f45
reader: always cons full escape_list
...
This is in preparation for separating CL-specific tokenization from general
rule. We need to carry information about all escaped characters even when we
don't change their case, this is to allow for interpretation of special token
characters, like ":" - when it is escaped then it has no meaning, otherwise it
separates the symbol from the package.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
f270b54692
reader: simplify and clarify arguments of ecl_read_token
2026-03-13 19:23:05 +01:00
Daniel Kochmański
f6e9a36651
reader: factor out ecl_read_token from ecl_read_object_with_delimiter
2026-03-13 19:23:05 +01:00
Daniel Kochmański
16ac6aff8c
reader: move the general-purpose reader from read.d to reader.d
2026-03-13 19:23:05 +01:00
Daniel Kochmański
b6c5aac5fd
reader: move the readtable implementation from read.d to readtable.d
2026-03-13 19:23:05 +01:00
Daniel Kochmański
6a7e285735
reader: move common-lisp specific readtable entries t rtab_cl.d
2026-03-13 19:23:05 +01:00
Daniel Kochmański
11914c6809
reader: fix set_syntax_from_char copying behavior
2026-03-13 19:23:05 +01:00
Daniel Kochmański
1802d96b91
core: split cl_core_struct in two structure cl_core and ecl_core
...
ecl_core contains early global environment that is meant to be shared by all
runtimes, while cl_core contains an environment relevant to common lisp.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
2a8327dc20
core: define protect and dummy tags as constants
...
Both tags have a special meaning to the low-level runtime (most notably the
frame stack). Extracting them from "all symbols" is a step towards multiple
runtimes.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
b93b2a6486
core: move defacto constants from cl_core structure to global space
2026-03-13 19:23:05 +01:00
Daniel Kochmański
249b81df16
apply: generic functions are dispatched via the entry point
...
Previously standard and restricted dispatch was dispatched via
_ecl_standard_dispatch, but that adds a dependency on gfun.d.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
330a4d6995
apply: move funcall and apply-from-stack eval.d -> apply.d
2026-03-13 19:23:05 +01:00
Daniel Kochmański
2b857250e4
core: minor cleanups in files character.d and string.d
...
These function clearly operates on strings, so move them to string.d
- cl_name_char
- cl_char_name
- ecl_string_case
Add a new local assertion assert_type_radix taht uses the new type.
sq
2026-03-13 19:23:05 +01:00
Daniel Kochmański
14fe134f1c
core: predlib: add a system type SI:RADIX
2026-03-13 19:23:05 +01:00
Daniel Kochmański
4768f23695
cosmetic: indent vector_push.d
2026-03-13 19:23:05 +01:00
Daniel Kochmański
3cb3c7aa17
bytevm: new opcode CALLW, don't open a frame when there are no locals
...
CALLW calls a word from the data stack. The word differs from normal functions
in that it takes no arguments (so the call does not modify the data stack).
To allow words using the stack across calls (like in "real" forth) don't unwind
the stack on exit if there are no locals.
2026-03-13 19:23:05 +01:00
Daniel Kochmański
237d096939
c/makefile: add separate vars to hold thread and unicode files
2026-03-13 19:23:05 +01:00
Daniel Kochmański
202a2e14ae
doc: update install for macos
2026-03-13 19:22:36 +01:00
Marius Gerbershagen
109aa3d265
apply workaround for clang bug more broadly
...
Xcode 26 distributes a clang version which identifies itself with
__clang_major__=17 and that is also affected by the bug for which the
workaround in commit 2fbdd292af was
added.
Closes #825 .
2026-03-13 19:14:02 +01:00
Daniel Kochmański
8efdd3757f
doc: fix typo
2026-03-11 08:39:29 +01:00
Daniel Kochmański
88a53fe73b
doc: add MacOS/arm64 -specific section to INSTALL
...
Contributed by Polos Ruetz.
2026-03-10 20:09:37 +01:00
Daniel Kochmański
79cbfc23fb
doc: document that fixnum, bignum, *-float are built-in classes
...
Fixes #109 .
2026-03-10 09:16:46 +01:00
Daniel Kochmański
8dec95f282
cmp: remove unsused config optiosn cc-format and ld-format
...
Closes #51 .
2026-03-10 08:42:40 +01:00
Daniel Kochmański
cc0bb43eb4
update asdf to 3.1.8.11
...
See https://gitlab.common-lisp.net/asdf/asdf/-/merge_requests/246 for context.
This effectively unbreaks haiku builds.
2026-03-09 15:42:41 +01:00
Daniel Kochmański
e39d6574ce
sockets: put the package in the same file as the implementation
...
build-module on rebuild reloads only files that have changes, so if we had
updated only sockets.lisp, then the package is not defined when the file is
recompiled and loaded.
2026-03-09 12:37:42 +01:00
Marius Gerbershagen
b58eb33283
disable floating point exceptions on android
2026-03-07 16:20:05 +01:00
Daniel Kochmański
b752046ed3
Revert "reader: fix a bug in SET-SYNTAX-FROM-CHAR"
...
This reverts commit 6011067359 .
2026-03-06 19:48:53 +01:00
Daniel Kochmański
6011067359
reader: fix a bug in SET-SYNTAX-FROM-CHAR
...
The regrssion test was added as mix.0036.reader.false-sharing.
2026-03-06 18:58:54 +01:00
Marius Gerbershagen
ae92d13562
find-class: fix bug when searching compiler env
...
Environment records can be atoms.
2026-03-05 20:22:39 +01:00
Marius Gerbershagen
fcddd9c175
compiler.d: fix order of evaluation bug for nested eval-when forms
2026-03-05 20:22:39 +01:00
Marius Gerbershagen
5053532ee1
avoid name clashes in some tests
...
The cmp.0077.make-load-form.circular-dep test already tried to avoid
name clashes using ext:with-clean-symbols but this is a bit
problematic to use with file compilation since it uses uninterned
symbols. Just adding a prefix avoids the issue in a simpler, more
robust way.
2026-03-05 20:22:39 +01:00
Daniel Kochmański
13d41b746a
tests: add a new regression test for a bug found in the reader
2026-03-05 14:37:08 +01:00