Embeddable Common-Lisp main repository.
Find a file
Daniel Kochmański b7eaf35502 streams: move byte_stack to strm_os and improve UNREAD-BYTE
The .byte_stack is used only by files to:
a) unread a single octet when we use fallback LISTEN implementation
b) unread bytes that make a character when UNREAD-CHAR is used

The latter is important to transcode characters from one external format to
another (i.e see the test external-format.0003-transcode-read-char).

This commit improves the function unread-byte to do the same brinding bivalent
streams almost to parity with regard to that implementation (see next commit).

That makes the implementation of eformat cleaner, .byte_stack more
self-contained, and saves us consing new byte stack for sequence streams (where
it was simply ignored, not to mention not entirely correct - because we've used
a .byte_stack length to decrement the pointer position while the byte could have
more bits than one octet).

Other optimizations that could be done here:
- make the byte stack an adjustable vector to avoid consing on each unread
2025-08-11 10:01:40 +02:00
contrib Small compatibility fixes 2024-10-07 07:42:22 +02:00
examples Update asdf_with_dependence example readme 2023-07-09 18:04:35 +00:00
msvc streams: add binary encoders and decoders to the mix 2025-08-11 10:01:40 +02:00
src streams: move byte_stack to strm_os and improve UNREAD-BYTE 2025-08-11 10:01:40 +02:00
.gitignore .gitignore: add the directory /local as ignored 2023-05-22 10:16:39 +02:00
.gitlab-ci.yml Update gitlab-ci to run pipeline less frequently (2) 2025-07-26 16:59:24 +02:00
appveyor.yml Add simple appveyor msvc build 2017-05-13 00:12:13 +02:00
CHANGELOG ecl_init_module: rebind *readtable* and *package* to protect the env 2025-07-17 16:02:18 +02:00
configure Preserve quoting when passing the arguments to the build directory 2008-08-27 09:50:44 +02:00
COPYING cleanup: update license to lgpl-2.1+ in both headers and text 2024-01-14 12:22:27 +01:00
INSTALL INSTALL: update the version of te tested emsdk version to 4.0.12 2025-08-04 10:06:31 +02:00
LICENSE cleanup: update license to lgpl-2.1+ in both headers and text 2024-01-14 12:22:27 +01:00
Makefile.in Makefile: allow both install and flatinstall targets 2024-02-24 22:30:16 +01:00
README.md update readme (typos) 2015-08-31 08:22:52 +00:00

ECL stands for Embeddable Common-Lisp. The ECL project aims to produce an implementation of the Common-Lisp language which complies to the ANSI X3J13 definition of the language.

The term embeddable refers to the fact that ECL includes a Lisp to C compiler, which produces libraries (static or dynamic) that can be called from C programs. Furthermore, ECL can produce standalone executables from Lisp code and can itself be linked to your programs as a shared library. It also features an interpreter for situations when a C compiler isn't available.

ECL supports the operating systems Linux, FreeBSD, NetBSD, DragonFly BSD, OpenBSD, Solaris (at least v. 9), Microsoft Windows (MSVC, MinGW and Cygwin) and OSX, running on top of the Intel, Sparc, Alpha, ARM and PowerPC processors. Porting to other architectures should be rather easy.