Краткий обзор реализаций Scheme
23 May 2022 |
Review
|
Scheme
Functional Programming
Наверное все, кто изучал информатику и вычислительную технику в университете, так или иначе,
в курсе функционального программирования, например, столкнулся с Scheme – языком
функционального программирования, произошедшем от Lisp, и известным как язык со скобками,
то есть где всё является так называемыми S-выражениями. Скорее всего это был MIT/GNU Scheme
или Racket. Но на самом деле реализаций Scheme великое множество. В этой статье собраны в
таблицы различные реализации Scheme, указаны поддерживаемые ими версии языка, является ли
реализация компилятором или интерпретатором, и другая информация.
Самые значимые реализации
Название |
Компилятор |
Интерпретатор |
Стандарт |
Написано на |
Лицензия |
Репозиторий |
Число звёзд на GitHub |
Последняя версия |
Версия в Ubuntu 22.04 LTS |
Название пакета в Ubuntu |
Версия в Nix |
Название пакета в Nix |
Версия в Guix |
Название пакета в Guix |
MIT/GNU Scheme |
+ |
+ |
R7RS |
Scheme |
GNU General Public License v2.0 |
|
|
12.1 |
11.2 |
mit-scheme |
12.1 |
mitscheme |
11.2 |
mit-scheme |
SCM |
+ |
+ |
R5RS |
C, Scheme |
GNU General Public License v3.0 |
|
|
5f3 |
5f3 |
scm |
|
|
5f3 |
scm |
Guile |
+ |
+ |
R6RS |
C |
GNU General Public License v3.0 |
|
|
3.0.9 |
3.0.7 |
guile-3.0 |
3.0.9 |
guile |
3.0.9 |
guile |
ChezScheme |
+ |
+ |
R6RS |
Scheme, C |
Apache License 2.0 |
cisco/chezscheme |
6780 |
9.6.4 |
9.5.4 |
chezscheme |
9.6.4 |
chez |
9.5.8 |
chez-scheme |
Racket |
- |
+ |
R6RS |
Scheme, C |
MIT License |
racket/racket |
4635 |
8.11.1 |
8.2 |
racket |
8.10 |
racket |
8.11.1 |
racket |
CHICKEN |
+ |
- |
R5RS |
Scheme |
BSD License (3-Clause) |
|
|
5.3.0 |
5.2.0 |
chicken-bin |
5.3.0 |
chicken |
5.3.0 |
chicken |
Scheme 48 |
- |
+ |
R5RS |
C, Scheme |
BSD License (3-Clause) |
|
|
1.9.2 |
1.9.2 |
scheme48 |
1.9.2 |
scheme48 |
1.9.2 |
scheme48 |
Gambit |
+ |
+ |
R5RS |
C, Scheme |
Apache License 2.0 |
gambit/gambit |
1225 |
4.9.5 |
4.9.3 |
gambc |
4.9.5 |
gambit |
4.9.5 |
gambit-c |
Chibi-Scheme |
- |
+ |
R7RS |
Scheme, C |
BSD License (3-Clause) |
ashinn/chibi-scheme |
1145 |
0.10 |
0.9.1 |
chibi-scheme |
0.10 |
chibi |
0.10 |
chibi-scheme |
Gerbil |
+ |
+ |
R7RS |
Scheme |
GNU Lesser General Public License v2.1 |
vyzo/gerbil |
1047 |
0.18.1 |
|
|
0.18 |
gerbil |
0.17.0 |
gerbil |
Cyclone Scheme |
+ |
+ |
R7RS |
Scheme, C |
MIT License |
justinethier/cyclone |
788 |
0.35.0 |
|
|
0.34.0 |
cycle-scheme |
|
|
Gauche |
- |
+ |
R7RS |
Scheme, C |
BSD License (3-Clause) |
shirok/Gauche |
755 |
0.9.13 |
0.9.10 |
gauche |
0.9.10 |
gauche |
0.9.12 |
gauche |
BiwaScheme |
- |
+ |
R7RS |
JavaScript |
MIT License |
biwascheme/biwascheme |
713 |
0.8.0 |
|
|
|
|
|
|
Другие реализации
Название |
Компилятор |
Интерпретатор |
Стандарт |
Написано на |
Лицензия |
Репозиторий |
Число звёзд на GitHub |
Последняя версия |
Версия в Ubuntu 22.04 LTS |
Название пакета в Ubuntu |
Версия в Nix |
Название пакета в Nix |
Версия в Guix |
Название пакета в Guix |
Stalin |
+ |
- |
|
Scheme, C |
GNU General Public License v2.0 |
|
|
0.11 |
0.11 |
stalin |
0.11 |
stalin |
0.11 |
stalin |
SISC |
- |
+ |
R5RS |
Java |
Mozilla Public License Version 1.1 |
|
|
1.16.6 |
1.16.6 |
sisc |
|
|
|
|
Scheme 9 from Empty Space |
- |
+ |
R4RS |
C, Scheme |
Public Domain |
|
|
2018.12.05 |
2018.12.05 |
scheme9 |
|
|
|
|
Larceny Scheme |
+ |
+ |
R7RS |
Scheme, C |
|
larcenists/larceny |
198 |
1.3 |
|
|
|
|
|
|
Vicare |
+ |
- |
R6RS |
Scheme, C |
GNU General Public License v3.0 |
marcomaggi/vicare |
196 |
0.4.1 |
|
|
|
|
|
|
Picobit |
+ |
+ |
|
C, Racket |
GNU General Public License v3.0 |
stamourv/picobit |
177 |
|
|
|
|
|
|
|
Mosh |
|
|
R6RS |
Rust, Scheme |
BSD License (2-Clause) |
higepon/mosh |
172 |
0.2.9 |
|
|
|
|
|
|
Bigloo |
+ |
+ |
R5RS |
Scheme, C |
GNU General Public License v2.0 |
manuel-serrano/bigloo |
120 |
4.5a-1 |
|
|
4.4b |
bigloo |
4.3g |
bigloo |
scheme2c |
+ |
+ |
R4RS |
C |
|
barak/scheme2c |
76 |
2012.10.14 |
2012.10.14 |
scheme2c |
|
|
|
|
Ikarus |
+ |
- |
R6RS |
C, Scheme |
GNU General Public License v3.0 |
|
|
0.0.3 |
0.0.3 |
ikarus |
|
|
|
|
Elk |
- |
+ |
|
C |
|
|
|
3.99.8 |
3.99.8 |
elk |
|
|
|
|
STklos |
|
|
R7RS |
C, Scheme |
GNU General Public License v2.0 |
egallesio/STklos |
64 |
2.0 |
|
|
|
|
1.70 |
stklos |
Kawa |
+ |
+ |
|
Java, Scheme |
MIT License |
kashell/Kawa |
51 (GitLab) |
3.1.1 |
|
|
|
|
3.1.1 |
kawa |
Ypsilon |
|
|
R7RS |
Scheme, C++ |
BSD License (2-Clause) |
fujita-y/ypsilon |
47 |
2.0.8 |
|
|
|
|
|
|
Sagittarius Scheme |
|
|
R7RS |
Scheme, C |
BSD License (2-Clause) |
ktakashi/sagittarius-scheme |
42 |
0.9.10 |
|
|
0.9.10 |
sagittarius-scheme |
|
|
SigScheme |
- |
+ |
R5RS |
Scheme, C |
BSD License (3-Clause) |
uim/sigscheme |
23 |
0.9.1 |
0.9.1 |
sigscheme |
|
|
|
|
TinyScheme |
- |
+ |
R5RS |
|
|
|
|
|
1.42 |
tinyscheme |
1.42 |
tinyscheme |
1.42 |
tinyscheme |
RScheme |
+ |
|
|
Scheme, C |
|
|
|
0.7.3.4 |
|
|
|
|
|
|
Библиотеки, разное
Название |
Назначение |
Стандарт |
Написано на |
Лицензия |
Репозиторий |
Число звёзд на GitHub |
Последняя версия |
Версия в Ubuntu 22.04 LTS |
Название пакета в Ubuntu |
SLIB |
Библиотека |
|
Scheme |
Public Domain |
|
|
3b7 |
3b6 |
slib |
Nanopass Framework |
DSL для создания компиляторов |
|
Scheme |
MIT License |
nanopass/nanopass-framework-scheme |
452 |
1.9.2 |
1.9.2 |
r6rs-nanopass-dev |
Scsh |
Оболочка (Shell) на базе Scheme 48 |
R5RS |
Scheme, C |
BSD License (3-Clause) |
scheme/scsh |
356 |
0.6.7 |
|
|
Scheme-to-C |
Пример неполного компилятора Scheme, построенного по технологии Nanopass |
|
Scheme |
MIT License |
akeep/scheme-to-c |
331 |
|
|
|
stex |
Конвертация кода на Scheme в LaTeX |
|
Scheme |
MIT License |
dybvig/stex |
84 |
1.2.2 |
1.2.1 |
stex |
Gerbil Utilities |
Коллекция дополнительных модулей для Gerbil |
R7RS |
Scheme |
GNU Lesser General Public License v2.1 |
fare/gerbil-utils |
41 |
0.2 |
|
|
Обновления
Обновление от 4 августа 2022
- Добавлена информация о реализациях Cyclone Scheme, Vicare и Bigloo.
- Добавлена информация о примере Scheme-to-C.
- Добавлена колонка “Название пакета в Ubuntu”:
часто название пакета не совпадает с названием реализации.
Кроме того, к основному пакету с компилятором или интерпретатором могут поставляться
отдельные пакеты с документацией и библиотеками.
- Исправлено форматирование первой таблицы.
Обновление от 14 ноября 2022
- Добавлена информация о реализациях Gerbil и BiwaScheme.
- Добавлена колонка “Лицензия”.
- Обновлены число звёзд и последние версии.
Обновление от 19 ноября 2022
- Добавлена информация о реализациях Kawa, Sagittarius, Larceny, Picobit.
Обновление от 23 ноября 2022
- Добавлена информация об оболочке Scsh.
Обновление от 7 мая 2023
- Обновлена информация о версиях. Вышли новые версии MIT/GNU Scheme, Guile,
ChezScheme, Racket, BiwaScheme, SLIB.
- Обновлена информация о числе звёзд на GitHub. У всех их число выросло, только
у Bigloo не изменилось, а у Sagittarius даже на одну снизилось. Gauche обошел
BiwaScheme (но это не принципиально, т.к. у них разное назначение).
- Добавлена информация о реализации RScheme.
- Добавлена колонка “Лицензия” в таблицу “Библиотеки, разное”.
Обновление от 6 января 2024
- Пожалуй самое значимое изменение – выход версии 2.0 STklos, в которой осуществлен переход
на стандарт R7RS и в которой добаленго большое количество стандартных библиотек.
- Добавлена информация о реализациях Mosh, Ypsilon.
- Добавлены колонки о версиях и названиях пакетов в Nix и Guix.
- Обновлена информация о версиях. Вышли новые версии ChezScheme, Racket, Gambit, Gerbil, Sagittarius.
- Обновлена информация о числе звёзд на GitHub. У всех их число выросло. Larceny обошел Vicare.
- Сайт SISC оказался недоступен.
- Репозиторий Vicare заархивирован.
(c) Симоненко Евгений, 2022, 2023, 2024