LINUX.ORG.RU

Lua в ядре NetBSD

 ,


1

6

Согласно докладу Марка Балмера (Marc Balmer, разработчик NetBSD) на FOSDEM'13, прошедшего 2 и 3 февраля, в ядро NetBSD-current добавлен скриптовый язык lua. Работы в данном направлении ведутся уже, как минимум, с 2010-го года.

Использование языка lua в ядре позволяет ускорить разработку драйверов, изменения функционала ядра, а также его настройку. Более низкий порог вхождения по сравнению с языком C позволит в будущем упростить разработку и ускорить темпы развития проекта, а также увеличить интерес сообщества к проекту NetBSD и привлечь новых людей.

>>> Доклад

★★★★★

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

Первое впечатление, что они упоролись. Хотя, может статься, если начать разбираться, то станет понятно, что это действительно для чего-то полезно.

ttnl ★★★★★
()

Меня терзают сомнения, что они серьёзно.

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

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

Выхлоп powertop с вашими питоноподелками

Моих питоноподелок ты не видел, но выхлоп powertop можешь направить прямо сюда.

tailgunner ★★★★★
()

Марка Балмера (Marc Balmer, разработчик NetBSD)

Да кто же не знает Марка Балмера...

x_hash
()

Почему не яваскрипт? Так и представляю себе: вышел драйвер устройства ХХХ, написанный на jQuery.

drull ★☆☆☆
()
Последнее исправление: drull (всего исправлений: 1)

Более низкий порог вхождения по сравнению с языком C позволит в будущем упростить разработку драйверов


Мне одному кажется что «более низкий порог вхождения» тут как раз вреден ?

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

Можно подумать, у iolanguage какие-то проблемы с зависимостями. Или у guile.

у guile таки куча зависимостей, сходу помню libgmp и boehm-weiser garbage collector

у луы только стандартная библиотека C

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

А почему еще никто не предложил Scheme в ядро впилить ? Например Guile ? Настоящий Emacs в ядре это ...

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

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

Да не трололо, нормальная идея. Подкинь вон разрабам HelenOS идею насчёт ерланга. :}

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

boehm-weiser garbage collector

А, точно. У луы же костыли вместо управления памятью. Нормальный gc ей не нужен.

geekless ★★
()

А как оно себя будет вести при ошибках рантайма, интересно?

madcore ★★★★★
()

Кстати, если для драйверов не нужно ничего кроме С, тогда почему существует биндинг libusb к python?

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

Какое облегчение может привнести тот же луа?

Портабельность например. Как и в любых скриптовых языках (перл, похапе, питон) единожды написанный код не требует модификаций при запуске на другой платформе. Напомню что в си/плюсах для этого используют горы костылей из конструкций #ifdef ... #endif

Нетбсд всегда славилась своей портабельностью (а значит грамотно спроектированным кодом, с поддержкой правильного стандарта - не GNU C а например ANSI C). Так что еще один - и весьма немалый - шаг к портабельности защитан.

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

Да хорош уже жечь-то...

... В ядре есть и связные списки http://isis.poly.edu/kulesh/stuff/src/klist/ , с 2005г. См. /usr/src/linux/include/linux. list.h — не оно?

Из остального «да что угодно». А с чего Вы взяли что на С невозможно применение методологии ООП, в т.ч. наследование? А что, на С нельзя реализовать «паттерн матчинг»? Я правда не вкуриваю на кой пень оно в ядре, но для С есть либо pcre, либо реализация в glibc — http://www.gnu.org/software/libc/manual/html_node/Regular-Expressions.html. С каррингом (в ядре) соизвольте уже пройти в жопу?

/* Ей-Богу достали скрипторылые криворукие неумехи, ни чего не желающие ни знать ни понимать из того, что не покрывается их синдромом утёнка и норовящие всё «заточить» под свой скудный умишко. */

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

Чем сложнее устройство, тем сложнее к нему драйверы - формирование очередей, колец, деревьев и более сложных структур данных далеко не редкость.

XVilka ★★★★★
()

Lua не знаю, но сама идея выкинуть си отличная. Надеюсь, к этому придут.

Давно нужен dsl для написания драйверов, хотя бы привязанный к конкретному ядру. В си только один термин предметной области - память, и никаких средств создания абстракций сложнее чем «функция». Конечный автомат, типичный для драйвера, и то пишется вручную. Зато хватает приколов типа if(current->uid = 0).

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

скриптовых языках (перл, похапе, питон) единожды написанный код не требует модификаций при запуске на другой платформе

Да, вот особенно питон, который несовместим сам с собой даже в разных версиях. А про ад переноса программ на Windows, я даже писать не хочу. Может хватит уже так беззастенчиво врать?

Alex-Alex
()
Ответ на: комментарий от nanoolinux

Не, ничего хорошего в этой идее нет. Иначе сделали бы уже давно, оно же на поверхности лежит.

Так и сделали, если ты про микроядра. Винду, QNX, и еще кучу менее известных операционок.

Manhunt ★★★★★
()
Ответ на: Да хорош уже жечь-то... от anonymous

... В ядре есть и связные списки http://isis.poly.edu/kulesh/stuff/src/klist/ , с 2005г. См. /usr/src/linux/include/linux. list.h — не оно?

Что «оно» - абстракция, хреново выражающаяся на Си? Тогда да, это оно.

А что, на С нельзя реализовать «паттерн матчинг»?

Попробуй реализвать и посмеши нас результатами.

достали скрипторылые криворукие неумехи, ни чего не желающие ни знать ни понимать из того, что не покрывается их синдромом утёнка и норовящие всё «заточить» под свой скудный умишко.

Читать научись сначала, гений системного программирования.

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

Так я даже не сомневаюсь в этом, даже вангую смартфоны со стопицотядерными процами и терабайтами оперативы, тормозящие при отрисовке кнопочки на экране. У меня в начале нулевых QuickOffice на Palm'е с 33-мя(!) мегагерцовым процом летал и очень шустро работал с большими таблицами. Зато теперь тот-же, вроде, QuickOffice на планшете с Ондроедом настолько долго и мучительно перерисовывает элементарную табличку, что мне хочется планшет разбить о стену.

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

На самом деле, меня эта идея давно посещает. Сделать что-то вроде vm-ядро, способное beam файлы запускать, которые и были бы драйверами тех или иных подсистем. Но боюсь, без С и асма всё равно не обойтись. Даже не представляю, как железные регистры устройств из эрланга выставлять о_О. Да и в одиночку я не справлюсь, если быть объективным. Да и в эрланге я не более чем нуб чесслово…

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

Винду

С каких это пор оно микроядро? Не знал.

QNX, и еще кучу менее известных операционок.

Ну, не на эрланге же )) Хотя концепция таже, я по этому и говорю, что идея на поверхности лежит. Эрланг для message based систем и заточен же.

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

В Windows ядро и драйвера в одном адресном пространстве, аналогично в Linux, Solaris, VMS и прочих *BSD. Расскажи, что такое microkernel в твоем понимании?

Alex-Alex
()
Ответ на: комментарий от unsigned

На самом деле, проблема гораздо больше тем тебе кажется. Правильнее всего рассматривать ядро как библиотеку для доступа к железным ресурсам. И делается это через некий апи. Только апи это у каждого производителя свой. И внутрености этой библиотеки тоже свои соответсвенно. Концепции тоже могут быть разные (монолит/гибрид/микроядро). А ты хочешь сделать, что бы для дров тоже был стабильный апи, независящий от концепции. Это как раз то, от чего тов. Торвадс всех отговаривает, ибо это привязывает намертво ядро к одной концепции/технологии/etc и соответсвенно потере гибкости и багаже устаревших подходов, которые всё усложняют. Я уже не говорю о потере производительности.

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

BSD
хорошо

Не некрофильствуй.

Deleted
()
Ответ на: комментарий от Alex-Alex

В Windows ядро и драйвера в одном адресном пространстве, аналогично в Linux, Solaris, VMS и прочих *BSD

...и Mach.

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

Вот я и говорю, что без С и асма не обойтись. Да и к тому же сразу же всплывает вопрос об эффективности. Знаменитая проблема микроядер, которую очевидно просто не решить.

nanoolinux ★★★★
()
Ответ на: комментарий от A-234

А вот лисп отлично подходит на роль языка для системного программирования. Пример тому - лисп-машины, где сама ОС была образом лиспа.

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

Даёшь лиспосрач в теме про NetBSD!

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

Так и сделали, если ты про микроядра. Винду

А матчасть кто учить будет?

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

Никто и не планировал выкидывать Си и писать все на JS. JS - это расширение возможностей платформы Gnome, а не наоборот.

Это к слову, какое говно этот ваш С++, если даже JS лучше.

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

А про ад переноса программ на Windows,

Вы бы еще под ДОС портировали программы. Скоро программисты переймут практику вебдизайнеров брать дополнительные деньги за поддержку семейства ишачьих. Тоже начнут брать деньги за поддержку семейства вендовых.

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

... Абстракция, хреново выражающаяся на С? А сами-то пробовали? Или по рассказам судить изволите? Дескать, деды заповедовали не выражаться абстракциями на С? :))) Вот по-всякому можно. А от абстракций увольте... Угу... :))) Пойду в классе расскажу... :)))

И что там должно быть не так, о уважаемый Гуру чего-то, что не С? Какие будут проблемы, подводные камни в реализации «паттерн матчинга» на С? Впрочем, Вы же изволили просить посмешить Вас? Ну извольте. Что смешного Вы можете увидеть здесь — http://wiztelsys.com/Article_iptables_bob2.html или, чтобы Вам не искать в каком модуле это реализовано, вот вам проще — http://www.linuxjournal.com/article/7184. Чтобы Вам долго не колупаться, я скажу сразу — это довольно старенький пример расширения для netfilter, строк в 60, в котором дропается любой пакет (как для TCP, так и для UDP), приходящий с определённого IP, заданного, как Вы можете догадаться в виде строки — static unsigned char *ip_address = «\xC0\xA8\x00\x01»;). Причём ещё задаются и static char *interface = «lo»; и unsigned char *port = «\x00\x17»; Чем не такой... лёгкий «паттерн матчинг»? И что здесь смешного в реализации?

Читать умею как могу. Вот было бы что прочесть. Вы бы писали так, чтобы ВАс прочесть и понять можно было однозначно?

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

The reason NT is not a micro-kernel system is that nearly all of the subsystems providing system services, including the entire Executive, run in kernel mode (in the same address space as the microkernel itself), rather than in user-mode server processes, as would be the case with a microkernel design.

Да и про message based я что-то там ничего не нашёл о_О

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

... Абстракция, хреново выражающаяся на С? А сами-то пробовали?

Да. Если ты не понял - я пишу (в том числе и) драйверы, и я использую ядерную реализацию списков.

Что смешного Вы можете увидеть здесь — http://wiztelsys.com/Article_iptables_bob2.html

Вы бы писали так, чтобы ВАс прочесть и понять можно было однозначно?

Анонимус не может в контекст, беда.

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

Ага, с тем же успехом, и макось - «микрокернел».

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

Логика гномера. Наглядная схема.

1. Группа X пишет десктопософт на C.
2. Группа X приходит к выводу, что писать десктопософт на C довольно-таки геморройно.
3. Группа X решает писать десктопософт на JS.
4. Наблюдающий за действом гномер строчит заметку в свой новостной блог: Группа X предпочла JS плюсам, ё!

Хотя на самом деле группа X предпочла JS их любимой сишечке.

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