Lisp interpreter with GC in <750 lines of Odin (and <500 lines of C)
Проект LISP
Репозиторий krig/LISP
заархивирован 28 авг 2025 г. и доступен только для чтения.
Разработка перенесена на Forgejo.
Комментарии (32)
- Участники обсудили, что минималистичность Lisp объясняется простотой синтаксиса (s-выражения) и всего трёх базовых форм: quote, cond, lambda.
- @krig показал свой 750-строчный интерпретатор на Odin, подчеркнув, что это учебный проект, а не продакшн-решение.
- Появились вопросы по синтаксису Odin (различие := и =), а также замечания о скорости и полезности такого «игрушечного» кода.
- Упомянули полезные ссылки: оригинальную статью Маккарти, объяснение Грэма, описание semi-space GC от Andy Wingo.
- Некоторые участники поделились личными впечатлениями о создателе Odin и культуре обсуждений вокруг языка.
Fenster: Most minimal cross-platform GUI library
fenster — сверхкомпактная кроссплатформенная GUI-библиотека.
-
Особенности:
- Окно, пиксельный буфер, ввод с клавиатуры/мыши.
- Один
.h
файл, ~400 LOC, зависимости: X11 (Linux), Cocoa (macOS), Win32 (Windows). - Поддержка C/C++, Zig, Odin, Rust, Go, JS (WASM), C#, Swift, Pascal, Nim, Lua, Python, Ruby, OCaml, Fortran.
-
Быстрый старт (C):
#define FENSTER_IMPL
#include "fenster.h"
int main() {
struct fenster f = {.width = 320, .height = 240, .title = "demo"};
uint32_t buf[320*240];
for (fenster_open(&f); fenster_loop(&f) == 0; ) {
// рисуем
fenster_sync(&f, buf);
}
return 0;
}
-
Сборка:
cc demo.c -o demo
(Linux:-lX11
, macOS:-framework Cocoa
, Windows: без флагов). -
API (C):
fenster_open
,fenster_close
,fenster_loop
,fenster_sync
.- Поля:
width
,height
,title
,keys[64]
,mouse
.
-
Лицензия: MIT.
Комментарии (31)
- Fenster — это минимальная C-библиотека, создающая окно с пиксельным буфером, а не полноценный GUI с кнопками и меню.
- Участники отмечают отсутствие скриншотов и просят добавить их в README.
- Название «Fenster» переводится как «окно» на немецком, африкаанс, шведском и других языках.
- Некоторые считают polling-цикл ошибкой, другие считают его допустимым для такой простой задачи.
- В блог-посте нашли опечатку в sizeof и ограничение кода 8-битными цветами.
- Проект вызывает интерес для визуализации данных и как лёгкая альтернатива raylib.