Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a06968a
vala: remove equality test for functions
asarhaddon Sep 6, 2026
ce7f77d
vala: fail when swap! first argument is not an atom
asarhaddon Sep 6, 2026
4799f37
vala: remove an unnecessary test (given Nil is a Listlike)
asarhaddon Sep 6, 2026
541c048
vala: inline Vector.from_list constructor
asarhaddon Sep 19, 2026
2ed8339
vala: fix "possibly null" when testing class membership
asarhaddon Sep 19, 2026
dcf4308
vala: merge several printing loops into a pr_list helper
asarhaddon Sep 9, 2026
165ade7
vala: simplify inheritance of truth_value()
asarhaddon Sep 9, 2026
fdf9ea2
vala: fix error message for (def! 1 2)
asarhaddon Sep 6, 2026
33cfbbf
vala: use setup() to load the non-interactive script
asarhaddon Sep 6, 2026
930d679
vala: simplify ARGV
asarhaddon Sep 6, 2026
09078b8
vala: make core.ns a function
asarhaddon Sep 6, 2026
44e0277
vala: print macros and functions differently
asarhaddon Sep 18, 2026
65a95da
vala: implement gc_traverse_m once for all listlike
asarhaddon Sep 6, 2026
b61f917
vala: use get_real_time instead of deprecated get_current_time
asarhaddon Sep 19, 2026
410956c
vala: helper checking the argument count
asarhaddon Sep 6, 2026
0d813a1
vala: replace a Mal exception with an assertion
asarhaddon Sep 21, 2026
bf42523
vala: rewrite the garbage collection (issue #663)
asarhaddon Sep 9, 2026
68c8a08
vala: use strings for symbols in environments and function parameters
asarhaddon Sep 19, 2026
fa812e8
vala: fail if pr_str encounters an unknown type
asarhaddon Sep 18, 2026
611f718
vala: make list evaluation more consistent, add TCO to the do special…
asarhaddon Sep 21, 2026
5fb9ab9
vala: helper checking argument count for special forms
asarhaddon Sep 21, 2026
d252116
vala: pass function arguments in an array instead of a list
asarhaddon Sep 21, 2026
008c161
vala: ensure that an iterator is collected after the container
asarhaddon Sep 8, 2026
5c38c40
vala: make outer a private field of env
asarhaddon Sep 23, 2026
6d8d6e1
vala: backport changes in last commits from stepA to steps0-9
asarhaddon Sep 23, 2026
981327e
vala: update Docker image
asarhaddon Sep 23, 2026
b5f0d57
vala: reduce the boilerplate for built-in functions
asarhaddon Sep 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions impls/vala/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:18.04
FROM ubuntu:25.04

##########################################################
# General requirements for testing or common across many
Expand All @@ -8,7 +8,7 @@ FROM ubuntu:18.04
RUN apt-get -y update

# Required for running tests
RUN apt-get -y install make python
RUN apt-get -y install make python-is-python3

# Some typical implementation and test requirements
RUN apt-get -y install curl libreadline-dev libedit-dev
Expand Down
15 changes: 10 additions & 5 deletions impls/vala/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,13 @@ Design notes on the implementation:
element of the cycle could end up being the last one referred to
from elsewhere, so you can't break the link by just making the right
one of those references weak. So instead there's a small garbage
collector in `gc.vala`, which works by being the only part of the
program that keeps a non-weak reference to any `Mal.Val` or
`Mal.Env`: it links all GCable objects together into a list, and
when the collector runs, it unlinks dead objects from that list and
allows Vala's normal reference counting to free them.
collector in `gc.vala`.

References to Mal objects and environments are reference-counted as
usual, but the references *between* objects are weak. The garbage
collector tracks all objects, and removes the one that only it can
reach.

There are also a few places using weak references inside the code
for practical reasons. This is safe as long as no garbage
collection happens during the variable lifetime.
Loading
Loading