LINUX.ORG.RU

Lunatik v3.6 — релиз среды исполнения Lua в пространстве ядра Linux

 , , , ,

Lunatik v3.6 — релиз среды исполнения Lua в пространстве ядра Linux

0

4

Lunatik — это фреймворк для написания сценариев для ядра Linux на Lua. Разрабатывается LabLua в рамках Lua in kernel с явными ссылками на опыт использования Lua в ядре NetBSD.

Основные компоненты

  • интерпретатор Lua, модифицированный для работы в ядре;
  • драйвера устройства (написаны на Lua);
  • средства командной строки для запуска сценариев и управления средами выполнения из пользовательского пространства;
  • C API для загрузки и запуска сценариев и управления средами выполнения из ядра;
  • Lua API для привязки средств ядра к Lua-скриптам.

Новые возможности


Группа разработчиков Lunatik выражает благодарность контрибуторам, благодаря которым стал возможен этот релиз: sav и marcelstanley из Ring-0 Networks, sheharyaar, jperon, vincentmli, rustedusted, glk0, ну и конечно же всем другим участникам, работающими над Lunatik.

Пример драйвера устройства для генерации простых «паролей»

-- /lib/modules/lua/passwd.lua
--
-- implements /dev/passwd for generate passwords
-- usage: $ sudo lunatik run passwd
--        $ head -c <width> /dev/passwd

local device = require("device")
local linux  = require("linux")

local function nop() end -- do nothing

local s = linux.stat
local driver = {name = "passwd", open = nop, release = nop, mode = s.IRUGO}

function driver:read() -- read(2) callback
	-- generate random ASCII printable characters
	return string.char(linux.random(32, 126))
end

-- creates a new character device
device.new(driver)

>>> Исходный код релиза

>>> Документация, исходный код и примеры проекта

>>> Сопутствующие проекты

>>> Анонс в официальной группе Lua

★★★★★

Проверено: CrX ()
Последнее исправление: hobbit (всего исправлений: 9)
Ответ на: комментарий от FishHook

как только Lua-в-ядре наберет достаточную популярность, то есть идея перестанет быть маргинальной

Вот почему-то не видел ни одного срача из-за Луа. Как ты думаешь, почему? Язык очевидно простенький, лёгонький и без претензий, хотя и медленный, как все интерпретируемые языки. В принципе понятно, где и как его использовать - в задачах не требующих быстродействия, но требующих гибкости.

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

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

С учётом того, что большинство срачей и истерик по поводу Раста на ЛОРе заводили любители сишечки/плюсов, такие заявления смотрятся особо занимательно.

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

Ну в данном контексте про скорость речь и вовсе не идет. Скрипт же грузится в ядро «построчно». Типа интерпретатору в ядре говорят «создай контекст исполнения нового скрипта». Ну и грузят скрипт ioctl'm построчно специально обученной тулзой. Интерпретатор на каждый ioctl что-то отвечает. Ну вот так это все с ядром и общается.

А про руст — да, пусть пыль осядет. Пока истерики и политики больше, чем инженерного смысла.

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

Вот почему-то не видел ни одного срача из-за Луа. Как ты думаешь, почему?

Об этом и пишет @FishHook. Как только какая-то технология становится популярной, она обретает hate среди форумных экспертов. Фактически Lua ничем от JavaScript не отличается, кроме популярности. Ненавидеть JavaScript — это «правило хорошего тона» среди «true-программистов», а вот Lua — «правило хорошего тона» уважать.

Сравним Lua и JavaScript в отрыве от библиотек. Оба — высокоуровневые интерпретируемые языки с весьма специфической реализацией ООП и ассоциативными массивами. Более того, у Lua индексация начинается с 1. Но это никого особо не парит. По одной простой причине: Lua малоизвестна и носит оттенок экзотичности и элитарности.

Если бы Lua была встроена в браузеры, её точно так же бы ненавидели senior chat experts и обзывали языком для макак.

То же самое можно сказать и про Tcl. Его уважают только потому, что он фактически не используется.

Опять же, я говорю о специфической части Linux-тусовки, а не об IT в целом.

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

Ну вот я люблю сишку, она прекрасна. Хотя и приходится работать с луа и питоном. Но у меня просто не с чем работать на си, а так с удовольствием бы работал. Чего все так не навидят си?

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

Я имел в виду любителей и сишки, и крестов одновременно

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

Об этом и пишет @FishHook. Как только какая-то технология становится популярной, она обретает hate среди форумных экспертов. Фактически Lua ничем от JavaScript не отличается, кроме популярности. Ненавидеть JavaScript — это «правило хорошего тона» среди «true-программистов», а вот Lua — «правило хорошего тона» уважать.

В твоих словах и словах @FishHook есть большая доля правды. Но здесь есть и другие аспекты. Например shell популярен, python тоже популярен, с/с++. Есть примеры скажем так, более положительной популярности и примеры отрицательно популярности. Когда какую-то технологию (почти всегда новую) продвигают через чур агрессивно, а также массово навязывают.

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

Ты же понимаешь, что «C/C++» это устойчивое выражение? Тогда зачем газифицируешь мелкий водоём?

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

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

«C/C++» это устойчивое выражение

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

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

Речь не о критике самого языка. Критика языка это нормально и естественно, потому что идеального языка нет и не будет.

Речь скорее о движухе вокруг.

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

Речь не о критике самого языка.

да? а я уверен, что именно самого языка. Как ни новость про питон, так двадцать страниц минимум критики языка.

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

Ненавидеть JavaScript — это «правило хорошего тона» среди «true-программистов», а вот Lua — «правило хорошего тона» уважать.

Так есть за что. Чтобы полностью понять Lua достаточно прочитать книжку Иерусалимсокого, и в языке не останется тёмных мест, и даже его сишный апи при этом изучишь. А про случаи неожиданного поведения в JS только ленивый не писал/ не рисовал смишные картиночки.

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

В луа своих темных мест хватает с головой. Одни таблицы чего стоят. Или назначение переменным nil. Или определение существования переменных. Или отсчет с единицы.

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

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

Одни таблицы чего стоят. Или назначение переменным nil. Или определение существования переменных. Или отсчет с единицы.

Это всё описано в книжке. И к тёмным местам я бы это не отнёс, это всё предельно очевидно после прочтения правила. Отсчёт с единицы так вообще более очевиден для непрограммистов, чем с нуля (в фортране, кстати, так же).

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

Ладно про остальное. Но таблицы. Это тихий ужас. Все в одном объекте с динамическим определением. Вот я на днях пытался сделать массив объектов. Если назначить индексу nil, все - разрыв и у тебя автоматом не массив. Часть элементов массив, часть хэш-таблица.

А иногда оно само просто динамически переделывает в хэш-таблицу. Ну просто потому что хочет.

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

Во, про питон и отсчёт с нуля: в питоне for i in range(5) делает цикл по значениям от 0 до 4, это считается понятным и лаконичным. Но это блин очевидно тем, кто привык к for (int i = 0; i < 5; i++) — да, всё чётко и меньше букав писать. А начинающим придётся долго привыкать, к тому, что конец интервала во всех конструкциях языка «выкалывается»

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

Да да да, про этот нюанс питона я тоже как раз вспомнил. Есть такое. Как раз столкнулся после луа, долго думал.

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

А иногда оно само просто динамически переделывает в хэш-таблицу.

Оно всегда хэш-таблица и массив в одном лице. ipairs останавливается на nil, но да, это криво и очевидно только сишникам.

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

о_О А что если исходники луа по работе с таблицам посмотреть. Хм. Нужно покопаться.

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

да? а я уверен, что именно самого языка. Как ни новость про питон, так двадцать страниц минимум критики языка.

Так я и говорю, Питон критикуют как язык, это нормально. Критика языка это хорошо и нормально.

А нездоровые явления вокруг Раста это явление другого рода.

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

А про случаи неожиданного поведения в JS только ленивый не писал/ не рисовал смишные картиночки.

Согласитесь, если прочитать 300 страниц про ядро языка JS, то строки с цифрами тоже складывать не будешь. Все «неожиданное поведение» JS это либо безграмотность, либо какие-то ребусы из code golf. В коде проходящем базовый code review никакого «неожиданного поведения» в JS нет.

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

Я вообще этого момента даже в питоне не понимаю. Нахрена делать один оператор для объединения строк и складывания чисел?

Вот в луа правильно же сделано - два разных оператора для двух разных действий и никаких неожиданностей.

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

Не, я не хочу сказать что все сторонники Раста какие-то истерички и неадекваты.

Ну, может не стоит так уж прям стесняться своих желаний?

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

:) Это было бы не толерантно…

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

sena ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.