1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# Zisp: A full-stack Lisp for the 21st Century
Zisp is my experimental language project that first started with the
idea of writing a simple Scheme implementation in Zig, just to learn
Zig and how to implement Scheme from scratch.
It then morphed into the idea of re-imagining Scheme, breaking off
from the standards to modernize it and clean up the small amounts of
cruft it has (yes, even Scheme has warts) especially where efficiency
and pragmatic use for "real-world" programming are concerned.
Next, I felt a surge of ambition and decided to aim for something
rather outlandish, considering that this is still just a toy project:
I want Zisp to become a "full-stack programming language" that allows
you to both write high-level script-style code in a "don't care style"
(as if it's a throwaway JavaScript, Python, or even Bash script) while
at the same time allowing a seamless transition into a stricter style,
with static typing, explicit data layouts, manual memory management,
and so on, to create optimal binaries that you could otherwise only
achieve with a lower-level language like C, Zig, or Rust.
Coming from high-level languages, you could think of this like adding
features to a language like Python or JavaScript that allow its users
to take total control over run-time behaviors like memory management
and object representation, which are normally handled implicitly.
Coming from lower-level languages, you could think of it as adding a
large amount of convenience APIs, and ergonomic syntax features, to
languages like C or Zig, to allow users to omit all the hoops they
would normally have to go through to achieve things that are rather
simple to do in higher level languages, at the cost of not having
optimal run-time behavior due to missing details.
This language doesn't actually exist yet. You are merely reading the
ramblings of a madman. A little bit of code is here already though:
[Source code](https://git.tkammer.de/zisp/)
The design process of Zisp happens in large part through little notes
and moderate-length blog-style articles that I write down to clarify
my own thoughts:
[Notes](notes/)
Some of these may be quite insightful, while others are ramblings.
Some are outdated with regards to code that I've since written to
actually implement the ideas, since writing code often gives you
another perspective on how to best do things.
|