LINUX.ORG.RU

PicoLisp 17.6

 ,


0

2

29 июня вышла новая версия интерпретатора PicoLisp.

PicoLisp — это ультрапрагматичный минималистичный диалект Lisp, работающий исключительно в режиме интерпретации. В его стандартную библиотеку входит эффективная база данных и веб-сервер, что позволяет с его использованием создавать веб-сервисы (и не только).

Обновление включает в себя две новые функции, исправления ошибок и улучшения repl, добавлена библиотека для Android и новый компонент TreeChart для web-gui.

>>> Страница загрузки

★★★

Проверено: jollheef ()
Последнее исправление: cetjs2 (всего исправлений: 4)
Ответ на: комментарий от sli

не собрался на Arch (не нашелся PicoLisp для бутстрапа).

Если есть JVM - то оберется через Ersatz PicoLisp.

Если не собралось из за наличия очень старой версии picolisp(там был момент и использованием инструкции, которая появилась позже). Автор языка уже обновил архив на своем сайте, выкатив исправление.

Как быстро отреагируют ребята, поддерживающие Aur - сказать не могу.

nihirash ★★★
() автор топика
Ответ на: комментарий от nihirash

Если говорить про macOS, то после 3 версии из Makefile пропала архитектура Darwin, потому результат такой:

$ (cd src64; make)
cc -o sysdefs -D_FILE_OFFSET_BITS=64 sysdefs.c
: sysdefs
./mkAsm emu "" .c  base "" ../lib/map  version.l glob.l main.l gc.l apply.l flow.l sym.l subr.l big.l io.l db.l net.l err.l sys/emu.code.l
[mkAsm.l:16] !? (in "emu.symtab" (setq *BaseData (read) *BaseCode (read) *BaseOpcodes (make (while (read) (chain @))) *OpOffs (length *BaseOpcodes)))
"emu.symtab" -- Read open error
? 
Если скопировать Makefile из версии 3.1.6, то результат такой:
$ (cd src64; make)
# Вырезано 158 предупреждений чтобы не засорять форум
# Полный лог: https://pastebin.com/Z8SYipU4
./mkAsm: line 15:  2973 Segmentation fault: 11  ../pil mkAsm.l "$@"
make: *** [emu.ext.c] Error 139
Скомпилированный picolisp крешится с сегфолтом. Возможно дело в том, что проблема заключается в различиях clang и gcc (что-то такое читал в списке рассылки).

По части OpenBSD, до компиляции не доходит

$ (cd src64; make)
*** Parse error in /home/sli/picoLisp/src64: Missing dependency operator (Makefile:7)
*** Parse error: Need an operator in 'else' (Makefile:10)
*** Parse error: Need an operator in 'endif' (Makefile:42)
*** Parse error: Missing dependency operator (Makefile:50)
*** Parse error: Need an operator in 'else' (Makefile:78)
*** Parse error: Need an operator in 'endif' (Makefile:111)

Arch Linux: скорее всего установка Java поможет, но мне лень это проверять :-)

sli
()
Ответ на: комментарий от nihirash

Что примечательно, Segmentation fault начал выпадать на версиях 3.1.9 и более поздних, но без доступа к истории коммитов выследить проблемное место сложно.

Может я неправильно ищу, может есть где-нибудь репа?

sli
()
Ответ на: комментарий от sli

Если говорить про macOS, то после 3 версии из Makefile пропала архитектура Darwin, потому результат такой

С Darwin'ом проблема есть из за PIE, сейчас собрать можно только в режиме emu, который медленный. По словам автора с макосью действительно сейчас не очень хорошо дела.

И можно сделать, чтобы работало, но для этого нужно перепилить файл src64/arch/x86-64.l

По части OpenBSD, до компиляции не доходит

Вот тут странно. Потому как в OpenBSD должно все работать нормально.

Больше похоже на проблему с make. Надо найти салазки для жесткого диска вместо slim-dvd - подниму на отдельном жестком OpenBSD(хотя бы в виртуалке) - будет проще помочь со сборкой.

nihirash ★★★
() автор топика
Ответ на: комментарий от sli

По части OpenBSD, до компиляции не доходит.

Как пишет nihirash, действительно

Больше похоже на проблему с make.

И, сразу же, не вдаваясь в подробности, приходит мысль попробовать gmake вместо make. Потому что, не знаю как сейчас, но раньше в разных бсдях синтаксис стандартного make отличался от GNU make.

anonymous
()
Ответ на: комментарий от anonymous

gmake сработал отлично! Ну и да, нужна либо ява либо готовый picolisp:

./mkAsm x86-64 ".openBsd" .s OpenBSD base "" ../lib/map  version.l glob.l main.l gc.l apply.l flow.l sym.l subr.l big.l io.l db.l net.l err.l sys/x86-64.openBsd.code.l
which: java: Command not found.
No PicoLisp binary found for bootstrapping
as -o x86-64.openBsd.base.o x86-64.openBsd.base.s
Assembler messages:
Can't open x86-64.openBsd.base.s for reading: No such file or directory
cc -o ../bin/picolisp x86-64.openBsd.base.o -Wl,-nopie -rdynamic -lc -lm 
/usr/lib/crt0.o: In function `_start':
(.text+0x5a): undefined reference to `main'
collect2: ld returned 1 exit status
gmake: *** [Makefile:135: ../bin/picolisp] Error 1

sli
()
Ответ на: комментарий от sli
$ doas pkg_add jre
$ export PATH=$PATH:/usr/local/jre-1.8.0/bin
$ gmake -C src64
$ ./pil -bye   
$

После установки jre запустилось на OpenBSD

sli
()
Ответ на: комментарий от sli

Ну и да, нужна либо ява либо готовый picolisp

Похоже, ещё можно собрать сначала 32-битный, а потом уже с его помощью 64-битный.

Чтобы собрать 32-битный не нужна ни жаба, ни пиколисп, а только gcc тулчейн, который умеет 32.

Но проверить точно не могу, у меня система 64-битная и не мультилиб.

anonymous
()
Ответ на: комментарий от sli

По части OpenBSD, до компиляции не доходит

gmake?

buratino ★★★★★
()
Ответ на: комментарий от anonymous

Потому что, не знаю как сейчас, но раньше в разных бсдях синтаксис стандартного make отличался от GNU make.

у нас настоящий make, с истинным духом Unix, а не какой-то новодел :)

buratino ★★★★★
()
Ответ на: комментарий от buratino

у нас настоящий make, с истинным духом Unix, а не какой-то новодел :)

Ну так я так и написал, "стандартный make отличается от GNU make".

GNU, вообще, отличается своей любовью к комбайнам. Они там пытаются превратить в комбайн любую программу, даже самую простую, вроде cat.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.