2025-02-21

vak: (Украина)
Увидел в ленте у [personal profile] mdmx ссылочку на роман "Чорна Рада", решил перепостить. Пантелеймон Куліш - украинский писатель середины 19-го века, мой земляк. Дружил с Тарасом Шевченко. Исторический роман "Чорна Рада" написан в 1846 году, опубликован в 1857-м. На цензуру был подан русский вариант, куда пришлось внести много правок. К счастью, украинскую версию удалось напечатать в обход цензуры.

Куліш Пантелеймон. Чорна рада (Краків, 1943).djvu

mozjs

2025-02-21 18:16
vak: (Default)
Народ попенял в комментах, что libjavascriptcoregtk.so дофига зависимостей за собой тащит. Это верно, спору нет. Подсказали обратить внимание на альтернативную реализацию Джаваскрипта от Мозиллы. На Гитхабе нашлась коллекция примеров:

github.com/mozilla-spidermonkey/spidermonkey-embedding-examples

Интерфейс несколько тяжелее, чем у JavaScriptCore. Вот тот же пример факториала, переписанный для mozjs:
исходный текст )
Запускаем:
$ c++ -std=c++17 factorial.cpp -o factorial `pkg-config --cflags --libs mozjs-102`
$ ./factorial
The result is: 3628800.000000
Зависимостей здесь намного меньше:
$ ldd factorial 
	linux-vdso.so.1 (0x0000ffffb3e22000)
	libmozjs-102.so.0 => /lib/aarch64-linux-gnu/libmozjs-102.so.0 (0x0000ffffb20a0000)
	libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffffb1e80000)
	libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffb1e40000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffb1c90000)
	libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffffb1c50000)
	libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffb1bb0000)
	/lib/ld-linux-aarch64.so.1 (0x0000ffffb3de5000)
Одно важное принципиальное отличие: libjavascriptcoregtk.so с вероятностью 99% уже имеется в вашем линуксе или маке. А libmozjs.so придётся дополнительно устанавливать. Зато на маке ничего не надо менять, всё одинаково работает.