LINUX.ORG.RU

Lua Jit 2.0


1

5

Вышел компилятор для Lua — LuaJit 2.0.

Основные изменения для релиза были в исправлении багов.

Изменения и улучшения по сравнению с первой версией:

  • Возможность использования конверсии исключений C++ для всех платформ с помощью функций-обёрток.
  • Обёртки для libm функций.
  • Сборка static и shared библиотек на POSIX.
  • Компилирование рекурсивного кода.
  • Портирование интепретатора и JIT компилятора на x86-64.
  • Разметка текущего трейса, даже если компилятор не доступен.
  • Оптимизация для and/or операторов.

И много других здесь.

Также доступны бенчмарки.

>>> Подробности

anonymous

Проверено: catap ()
Последнее исправление: Binary (всего исправлений: 1)

Ответ на: комментарий от Boba_Fett

Честно, я так пока и не понял: чем Lua лучше Python?

А ничем не лучше.

Ну да, понятие лучше - относительное. Вот кому-то нравится, что иерархия классов может быть частично на lua а частично на c++. Причем от lua «класса» можно унаследовать c++ класс и наоборот. Доставляет скриптование базовых классов для плюсовых модулей. :)

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

Причем от lua «класса» можно унаследовать c++ класс

А что, Lua-«классы» известны на этапе компиляции? O_o

Нет. Поэтому «классы» в скобках. Ограничения вводятся и «классы» должны быть специально написанны для наследования.

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

Причем от lua «класса» можно унаследовать c++ класс

А что, Lua-«классы» известны на этапе компиляции? O_o

Нет. Поэтому «классы» в скобках.

Тогда «унаследовать» тоже должно быть в кавычках.

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

Тогда «унаследовать» тоже должно быть в кавычках.

Ну здесь кавычеки вряд ли нужны.

Для плюсовых программистов поведение выглядит как наследование от обычного класса.

А если что-то крякаяет, как утка, летает как утка и плавает как утка, то это и есть утка.

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

Для плюсовых программистов поведение выглядит как наследование от обычного класса.

Не знаю про сферических плюсовых программистов в вакууме, но для меня наследование (без кавычек) - это вполне определенная языковая конструкция. Если в случае с «наследованием от Lua-'класса'» ее нет - значит, это «наследование» (в кавычках).

А если что-то крякаяет, как утка, летает как утка и плавает как утка, то это и есть утка.

Или это псих в бассейне.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Не знаю про сферических плюсовых программистов в вакууме, но для меня наследование (без кавычек) - это вполне определенная языковая конструкция. Если в случае с «наследованием от Lua-'класса'» ее нет - значит, это «наследование» (в кавычках).

Тебе важен синтаксис а не суть. Для дела суть важнее. Синтаксис - лишь сахар облегчающий работу.

А если что-то крякаяет, как утка, летает как утка и плавает как утка, то это и есть утка.

Или это псих в бассейне.

Псих может летать как утка и плавать как утка? Ж)

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

Тебе важен синтаксис а не суть.

Шалтай-Болтай тебе не родственник? Он любил говорить «Когда я выбираю слово, оно значит только то, что я хочу».

Псих может летать как утка и плавать как утка? Ж)

Наследование от Lua-«класса» тоже не выглядит как «наследование от обычного класса».

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

Тем, что небезопасны. Скрипт-то любая сука подсунуть может, он должен в анально огороженной песочнице жить.

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

Сява ты, а не ветеран. Небось, и PL/I не использовал, и никаких юниксов до линуха не видел, и даже аппаратного VT100 не трогал? Откуда у тебя вообще опыту-то взяться?

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

Сява ты, а не ветеран.

Why so butthurt?

Небось, и PL/I не использовал, и никаких юниксов до линуха не видел

Оба раза ты попал пальцем в небо.

и даже аппаратного VT100 не трогал?

Вот здесь ты, возможно, прав. Работал с советскими аналогами VT*, но VT100 это были или что-то другое - не помню уже.

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

Why so butthurt?

Неприятно, когда сосунки неопытные себя в «ветераны» записывают.

Работал с советскими аналогами VT*,

С Егошинским VT52 «Marshall»? Или еще чем?

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

Ну как минимум увеличивают размер программы, дают гибкость которая не всегда нужна(запретить открывать сокеты). Так то да питон встраивается нормально, но вот выглядит это как срельба из пушки по воробьям.

Выпили socket.py, какие проблемы?

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

Питон сравнивает id объектов по поэлементно

А если ссылки на элементы имеют одинаковые имена?

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

Неприятно, когда сосунки неопытные себя в «ветераны» записывают.

Уже не кажешься себе уникальным? Ничего, через это все проходят %)

С Егошинским VT52 «Marshall»? Или еще чем?

Я же сказал - не помню. Если бы 20 с чем-то лет назад я знал, что суровый анонимус будет меня экзаменовать... то мне всё равно было бы пох :)

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

Тебе важен синтаксис а не суть.

Шалтай-Болтай тебе не родственник? Он любил говорить «Когда я выбираю слово, оно значит только то, что я хочу».

Понятно. Тебе важно пописить. Мне дело.

Псих может летать как утка и плавать как утка? Ж)

Наследование от Lua-«класса» тоже не выглядит как «наследование от обычного класса».

Какая разница выглядит как наследование от обычного класса или нет. Главное, что само наследование возможно. И для программиста оно выглядит как наследование, то есть дает ту функцианальность, которую другие дать не могут. А дальше извращайся как хочешь, но этого факта ты не отменешь.

Еще раз повторю, важна суть, что наследование возможно. Было бы у других наследование с синтаксическим сахаром, можно было бы что-нибудь говорить, но ведь нет у других вообще никакого нет.

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

Те, кому нужен не синтаксис, а суть, на С++ вообще не пишут.

Только среди тех, кому важен синтаксис а не суть мало тех, кто может что-нибудь написать.

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

Какая разница выглядит как наследование от обычного класса или нет.

Такое «наследование» возможно везде, где возможны динамическая генерация кода и callback в код на интепретируемом языке. В отличие от нормального наследования.

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

Какая разница выглядит как наследование от обычного класса или нет.

Такое «наследование» возможно везде, где возможны динамическая генерация кода и callback в код на интепретируемом языке. В отличие от нормального наследования.

Можеть быть. Принципиально возможна. Реально не видел. Ибо сложность этого превышает уровень разработчиков этих языков. У Lua данная сложность не превысила.

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

сложность этого превышает уровень разработчиков этих языков

Тебе верю сразу.

*Смущаясь Фраза получилась конечно не очень... :)

Но смысл она передает.

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

А. Ну, тогда и в Python сделали: http://pypi.python.org

естественно, сделали. Но в питоне из коробки масса всего и масса всего дополнительного. А в луа из коробки действительно минимум и отдельно дополнения.

python-markupsafe-0.11-4.fc17.x86_64 Size : 58920 notify-python-0.1.1-20.fc17.x86_64 Size : 70395 python-kerberos-1.1-8.1.fc17.x86_64 Size : 48719 abrt-addon-python-2.0.12-1.fc17.x86_64 Size : 24671 python-mako-0.5.0-2.fc17.noarch Size : 1219386 python-crypto-2.6-1.fc17.x86_64 Size : 2356754 gnome-python2-bonobo-2.28.1-8.fc17.x86_64 Size : 373293 python-decorator-3.3.3-1.fc17.noarch Size : 66899 python-urlgrabber-3.9.1-16.fc17.noarch Size : 450077 gupnp-igd-python-0.2.1-1.fc17.x86_64 Size : 15571 libvirt-python-0.9.11.5-3.fc17.x86_64 Size : 1395034 newt-python-0.52.14-2.fc17.x86_64 Size : 115142 setools-libs-python-3.3.7-24.fc17.x86_64 Size : 1638541 python-tempita-0.5.1-1.fc17.noarch Size : 131583 python-slip-dbus-0.2.20-2.fc17.noarch Size : 82204 python3-libs-3.2.3-7.fc17.x86_64 Size : 24756924 libselinux-python-2.1.10-3.fc17.x86_64 Size : 701715 python-ethtool-0.7-3.fc17.x86_64 Size : 69760 gnome-python2-canvas-2.28.1-8.fc17.x86_64 Size : 76119 gnome-python2-gnome-2.28.1-8.fc17.x86_64 Size : 368124 python-iniparse-0.4-4.fc17.noarch Size : 115162 python-beaker-1.5.4-3.fc17.noarch Size : 287027 spice-gtk-python-0.12-4.fc17.x86_64 Size : 46776 python-virtinst-0.600.3-1.fc17.noarch Size : 2113086 python-meh-0.12-1.fc17.noarch Size : 190485 gtk-vnc-python-0.5.1-4.fc17.x86_64 Size : 34179 dbus-python-0.83.0-9.fc17.x86_64 Size : 808225 libsemanage-python-2.1.6-3.fc17.x86_64 Size : 320643 gnome-python2-desktop-2.32.0-9.fc17.x86_64 Size : 245208 python-cups-1.9.61-2.fc17.x86_64 Size : 233573 python-kitchen-1.1.1-1.fc17.noarch Size : 1564634 gnome-python2-gnomekeyring-2.32.0-9.fc17.x86_64 Size : 46968 python-slip-0.2.20-2.fc17.noarch Size : 55920 audit-libs-python-2.2.1-1.fc17.x86_64 Size : 273153 gnome-python2-gconf-2.28.1-8.fc17.x86_64 Size : 136534 python-setuptools-0.6.27-2.fc17.noarch Size : 1555313 farstream-python-0.1.2-2.fc17.x86_64 Size : 43024 python-libs-2.7.3-7.2.fc17.x86_64 Size : 24974946 libxml2-python-2.7.8-7.fc17.x86_64 Size : 2193910 gnome-python2-gnomevfs-2.28.1-8.fc17.x86_64 Size : 346270 python-slip-gtk-0.2.20-2.fc17.noarch Size : 3939 python-simplejson-2.5.2-1.fc17.x86_64 Size : 557961 policycoreutils-python-2.1.11-18.fc17.x86_64 Size : 956049 boost-python-1.48.0-13.fc17.x86_64 Size : 657210 python-iwlib-1.2-1.fc17.x86_64 Size : 28932 python-libasyncns-0.7.1-6.fc17.x86_64 Size : 57983 python-2.7.3-7.2.fc17.x86_64 Size : 79867 gstreamer-python-0.10.22-2.fc17.x86_64 Size : 1405587 python-chardet-2.0.1-4.fc17.noarch Size : 1141130 python-smbc-1.0.13-1.fc17.x86_64 Size : 59495 rpm-python-4.9.1.3-7.fc17.x86_64 Size : 130401 python-pwquality-1.1.1-1.fc17.x86_64 Size : 15608 python-IPy-0.75-2.fc17.noarch Size : 121960 libuser-python-0.57.6-1.fc17.x86_64 Size : 72744 python-pycurl-7.19.0-10.fc17.x86_64 Size : 236251 python-deltarpm-3.6-0.7.20110223git.fc17.x86_64 Size : 42858 gnome-python2-2.28.1-8.fc17.x86_64 Size : 159203 python-imaging-1.1.7-6.fc17.x86_64 Size : 1387126 python-GnuPGInterface-0.3.2-9.fc17.noarch Size : 77378 libreport-python-2.0.13-2.fc17.x86_64 Size : 72319 python-paste-1.7.5.1-6.20111221hg1498.fc17.noarch Size : 3308614

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

ололо вы случаем не майкрософте быдлокодите. попутно с выпиливанием socket.py придется выпилить и _socket, команду import, и тд. Проще уж собственный интерпретатор накатать или взять готовый такой как lua.

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

Питоно фанбои в любой теме про язык программирования или интерпретатор утверждают что Python впереди планеты все и вообще идеальное решение. Питонисты изо всех сил пытаются донести до создателей wow, и S.T.A.L.K.E.R. что они идеоты потому что выбрали lua как встраиваемый язык. И вообще кругом одни дэбилы потому что они не быдлокодят на питоне.

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

Борьба слона с китом же. Для встраиваемого языка важны легковесность и гибкость, когда же для прикладного — разнообразие языковых средств и батарейки в комплекте.

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

ололо вы случаем не майкрософте быдлокодите

Нет, я больше по кластерам метапарадигм, или как там

попутно с выпиливанием socket.py придется выпилить и _socket, команду import

Садизмом увлекаетесь? Маркиз де Сад одобряэ

Проще уж собственный интерпретатор накатать или взять готовый такой как lua.

Бери, никто не держит

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

Насколько я знаю, на питоне хороши пишется приклад, ибо есть бинды есть ко всему до чего он смог дотянуться, особенно в линуксах, а луа совсем для другого - систему плагинов прикрутить, к движку скрипты присобачить, да просто конфиги на нем можно делать.

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

ты можешь взять такой json парсер где сможешь понять что элемент - null

Все JSON-парсеры на Lua работают через костыли и вместо родного nil прописывают другое значение, ибо по-другому нельзя. Такая вот кривая поделка ваш Lua.

Если мне понадобится

Тебе - еще долго не понадобится, делай лучше уроки иди, сынок :D

Чувак, ты поаккуратнее.

Да, с вами, меньшинствами, только глаз да глаз :D

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

Слил, школота

Ну что, пришел снова поплакаться, обделенный жизнью соплежуй? :D А вообще ты молодец, самокритичность достойна уважения :)

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

Насколько я знаю, на питоне хороши пишется приклад, ибо есть бинды есть ко всему до чего он смог дотянуться, особенно в линуксах, а луа совсем для другого - систему плагинов прикрутить, к движку скрипты присобачить, да просто конфиги на нем можно делать.

Одна проблема. Наваяв на python'е прикладуху будет тяжело потом ее переписывать на Си. Вон как долго с yum'ом возились. Python диктует свою архетектуру и нужно очень аккуратно оценивать задачу(не будет ли потом выбор в качестве языка python'а сдерживать развитие).

Для таких задач как раз лучше всего комбинация Си и lua. Она не заставляет изменять архитектуру реализации решения задачи, но дает возможность делать плагины, конфиги и скрипты, хотя и не настолько понятные и удобные как python.

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

Сравни скосроть hg clone и git clone, а лучше hg diff и git diff.

Отмазка: git при всем при этом говно редкостное. Но, сука, быстрое. Потому и мечтаю о hg на Си.

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

Сравни скосроть hg clone и git clone, а лучше hg diff и git diff.

Да делали их много раз, результат различался не сильно.

$ time hg clone linux-kernel-stable ll
updating to branch default
39732 files updated, 0 files merged, 0 files removed, 0 files unresolved

real    1m30.158s
user    0m48.123s
sys     0m21.013s
$ cd ll
$ time hg diff

real    0m2.222s
user    0m1.800s
sys     0m0.340s
$ echo "foo" >>fs/ext4/super.c 
$ time hg diff
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5331,3 +5331,4 @@
 MODULE_LICENSE("GPL");
 module_init(ext4_init_fs)
 module_exit(ext4_exit_fs)
+foo

real    0m2.249s
user    0m1.616s
sys     0m0.492s
$
$ time git clone linux-stable ll
Initialized empty Git repository in /home/vmg/scratch/ll/.git/
Checking out files: 100% (40902/40902), done.

real    1m20.201s
user    0m11.165s
sys     0m7.532s
$ cd ll
$ time git diff

real    0m0.448s
user    0m0.204s
sys     0m0.196s
$ echo "foo" >>fs/ext4/super.c
$ time git diff
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 80928f7..ef87c5f 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5365,3 +5365,4 @@ MODULE_DESCRIPTION("Fourth Extended Filesystem");
 MODULE_LICENSE("GPL");
 module_init(ext4_init_fs)
 module_exit(ext4_exit_fs)
+foo

real    0m0.421s
user    0m0.220s
sys     0m0.204s
$

Если 1.8 секунды отставания на diff ядра ты называешь «Т.О.Р.М.О.З.», ты явно не имел дела с bzr.

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

А зачем её на си переписывать? hg живет себе вполне нормально, emerge тоже не шибко на си спешит.

Что бы можно было бинды к любым другим языкам прикрутить. Что бы можно было из любой другой программы дернуть вызов из библиотеки.

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

А зачем её на си переписывать? hg живет себе вполне нормально, emerge тоже не шибко на си спешит.

Что бы можно было бинды к любым другим языкам прикрутить.

Вон тот же Git - на Си, но вызов библиотеки не дернешь. А сделать биндинги на уровне RPC или command protocol можно для любого языка.

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

Вон тот же Git - на Си, но вызов библиотеки не дернешь. А сделать биндинги на уровне RPC или command protocol можно для любого языка.

Вообще-то он не на Си, а на Си и интерпретируемых языках. :) Высокоуровневые команды зовут низкоуровневые. Архитектуру такую создали :(, потому что изначально не сразу на Си писали. Нужно было быстрее - сделали быстрее. Теперь наследство.

Биндинги ко всему сделать можно, весь вопрос в сложности и в количестве людей могущих это сделать.

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

ты явно не имел дела с bzr.

Вот зачем ты это слово написал? Я же только что поел! Теперь снова есть придется.

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

Вообще-то он не на Си, а на Си и интерпретируемых языках. :)

Ядро там на Си.

Биндинги ко всему сделать можно, весь вопрос в сложности и в количестве людей могущих это сделать.

Но не из всякой Си-программы получится библиотека.

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