LINUX.ORG.RU

Lua в ядре NetBSD

 ,


1

6

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

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

>>> Доклад

★★★★★

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

Я бы сказал, что у них к Си нечто более сильное, чем просто «нравится» - это настоящая любовь. Слепая, как ей и положено.

Вряд ли. У них Vala есть.

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

А незачем использовать указатели там где можно обойтись без них

А теперь расскажи это погромистам на с/с++ где даже многие стандартные функции принимают в качестве аргумента не значение а указатель (ибо скорость нах, и пох на ошибки!)

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

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

Так эта проблема возникает именно при явном преобразовании типов а оно требуется угадай где.

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

Откуда появился «произвольный код»? На Си-обработчиках прерываний не пишут произвольного кода.

Оттуда, что у нас же теперь Lua и «низкий порог вхождения».

(пожимая плечами) Я правильно понимаю - высокий порог вхождения гарантирует отсуствие произвольного кода в прерываниях? Если неправильно, потрудись уже сформулировать свои претензии ясно. Можешь просто сказать «они хотят отнять мою илитарность!!111» или «согласен с AiFilTr0».

Я бы сказал, что у них к Си нечто более сильное, чем просто «нравится» - это настоящая любовь. Слепая, как ей и положено.

Вряд ли.

Зачем ты отрицаешь реальность?

У них Vala есть.

И JS. Но это доказывает не отсуствие болезненной любви к Си, а наличие не менее болезненной ненависти к Си++.

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

придется писать интерпретатор сишечки.

зачем писать - есть уже, в том числе и на clang/llvm

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

У них Vala есть

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

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

Я правильно понимаю - высокий порог вхождения гарантирует отсутствие произвольного кода в прерываниях?

В Си можно явно сформулировать «память не проси, мьютексы не используй», и «если вы не просили память явно, то неявного заспоса не будет» Пойду конечно почитаю рантайм Lua изнутри, может для него тоже верной второй пункт, но я в сумнениях.

Можешь просто сказать «они хотят отнять мою илитарность!!111»

С чего бы, я вообще всегда надеялся увидеть ядро на чём-то (относительно) подлежащем статическому анализу. Тут правда от Lua проку мало ))

И JS. Но это доказывает не отсуствие болезненной любви к Си, а наличие не менее болезненной ненависти к Си++.

А зачем нам второй тулкит на плюсах? ))

sv75 ★★★★★
()

первое апреля?

вот уж правда чем черт(beastie) не шутит

тред не читал

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

Ссылку? (а то я в танке)

mono говорил, что gnome shell изначально писали на Vala, сейчас там его нет, хотя я лично не проверял - был ли он там раньше

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

Я, кстати, не понимаю, что все так от lua тащятся. Посредственный язычок.

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

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

Lua и «низкий порог вхождения».

(пожимая плечами) Я правильно понимаю - высокий порог вхождения гарантирует отсуствие произвольного кода в прерываниях?

В Си можно явно сформулировать «память не проси, мьютексы не используй», и «если вы не просили память явно, то неявного заспоса не будет»

Можно сформулировать, да (хотя, например, скользкий вопрос - является ли рост стека при вызове функции выделением памяти). Но можно и вызвать kmalloc в прерывании, Си не будет возражать.

Пойду конечно почитаю рантайм Lua изнутри

Я таки не понял, к чему претензии - к снижению порога вхождения или к говноязычку Луа?

Можешь просто сказать «они хотят отнять мою илитарность!!111»

С чего бы

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

я вообще всегда надеялся увидеть ядро на чём-то (относительно) подлежащем статическому анализу

Прикинь, это тоже снизит порог вхождения. Причем реально снизит, а не как Луа.

А зачем нам второй тулкит на плюсах? ))

А зачем нам первый тулкит на Си?

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

А теперь расскажи это погромистам на с/с++ где даже многие стандартные функции принимают в качестве аргумента не значение а указатель (ибо скорость нах, и пох на ошибки!)

Это какие же «стандартные функции» принимают указатель там, где можно передать значение?

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

Но можно и вызвать kmalloc в прерывании, Си не будет возражать.

Вот для ядра нужен язык, который позволит гарантировано это отловить во время компиляции. И Lua тут никак не поможет.

Прикинь, это тоже снизит порог вхождения. Причем реально снизит, а не как Луа.

Так и отлично.

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

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

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

Предлагаю встроить в ядро NetBSD виртуальную машину из Quake и драйверы писать на языке Quake C.

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

Alex-Alex> в отличие от питона, который портирован на Windows, но использовать его там нормально нельзя.

Что за чушь?

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

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

C NT:) «Windows NT's kernel mode code further distinguishes between the „kernel“, whose primary purpose is to implement processor and architecture dependent functions, and the „executive“. This was designed as a modified microkernel, as the Windows NT kernel was influenced by the Mach microkernel developed at Carnegie Mellon University,» (с) У Катлера была хорошая трава: VMS + Mach ???? профит!

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

А какова мотивация сишных прогеров выучить lua хотя бы до уровня «могу прочитать»?

У автора луа, судя по ключевым словам, какой-то паскаль головного мозга. Но:

188K    /usr/bin/lua5.2
1,4M    /usr/bin/nodejs
1,5M    /usr/bin/perl
2,5M    /usr/bin/python2.7
При всём при этом:
$ ldd /usr/bin/lua5.2
    linux-gate.so.1 =>  (0xb7724000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb76e5000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb76e0000)
    libreadline.so.6 => /lib/i386-linux-gnu/libreadline.so.6 (0xb76a5000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fb000)
    /lib/ld-linux.so.2 (0xb7725000)
    libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb74dc000)
А если встраивать?
200K    /usr/lib/i386-linux-gnu/liblua5.2.so.0.0.0
С такими зависимостями (точнее, их отсутствием), размером, полной самодостаточностью (в отличие, например, от перла, в котором без модулей не сделаешь ровным счётом нифига) и всякими loadlib-ами этот самый паскализм вполне простителен.

border-radius
()
Ответ на: Ага. Вот именно... от anonymous

«Неосиляторы» не интересны принципиально.

Си простой как три копейки, какие ещё неосиляторы?

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

Прикинь, это тоже снизит порог вхождения. Причем реально снизит, а не как Луа.

Ну и отлично, а что?

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

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

Да не с каких.

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

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

Из того, что в винде kernel != всё, что в kernalspace, не значит, что там микроядро.

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

Прикинь, это тоже снизит порог вхождения. Причем реально снизит, а не как Луа.

Ну и отлично, а что?

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

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

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

Я сокрушался из-за того, что сам рантайм Lua будет кушать память, потому что высокоуровневые динамические рантаймы любят это делать, когда им надо, и что, наоборот, программисту будет сложнее объяснить «если ты вот это сделаешь — будет бяка», по сравнению с «kmalloc не трогай».

Но возможно я слишком плохого мнения о рантайме Lua просто.

sv75 ★★★★★
()
Ответ на: комментарий от border-radius

С какого времени, Pascal/Pascal Naming conventions стал чем-то плохим, если в C только сейчас поняли, что им нужна нормальная модульность, которая в Паскале уже лет 20 есть.

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

Нормальная модульность есть в питоне, остальное - ересь. Равно как и синтаксис поцкаля со 100500 ключевых слов вместо обозначений блоков скобками/отступами. Хорошо, что в луа его всё-таки не полностью перенесли.

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

Уважаемый, расскажите мне, в чем же принципиальное различие модульности в Python и Component Pascal, или как вариант Turbo Pascal 7.x?

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

Что-то код сильно Паскаль напоминает.

Тут от паскаля только := и запись типа после имени.

Первое — аналог приплюснутого auto var = value, а второе нужно, чтобы тип мог спокойно читаться справа налево не превращаясь в ребус даже на сложных типах.

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

PolarFox ★★★★★
()

может это такой пиар netbsd? типа тостеров) а то про неё редко вспоминают, разве что те, кто pkgsrc использует

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

кстати, мои первые программы на си были написаны на quakec:)

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

но лучше кушать память чем «взбесившийся указатель покоцал мне файловую систему что делать»

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

а чем заменить си? есть варианты?

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

Ну а вообще, вот разной степени мертвости проекты «улучшенного Си» - Cyclone, [http://ivy.cs.berkeley.edu/ivywiki/index.php]Ivy, BitC, даже Rust.

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

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

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

расскажите мне, в чем же принципиальное различие модульности в Python и Component Pascal, или как вариант Turbo Pascal 7.x?

так толсто что даже тонко

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

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

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

Тьюринг полный против Тьюринг полного языка, И я не языки просил сравнивать, а как задается «модульность» в этих языках, и в чем принципиальное различие.

В С/С++ модульности почти нет, там только заголовочные файлы, с помощью которых можно построить очень хрупкую модульность.

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

Мм.. т.е. ты еще и против тестирования.. интересно..

Ты, как всегда и в каждом треде несешь ахинею, и отображаешь свои больные фантазии на нормальных регистрантов.

Тесты, по сравнению с доказательствами, как правило, очень слабы. Даже если они покрывают весь код (покажи масштабные проекты с 100% покрытием), то, в большинстве случаев, они не перекрывают возможные области значений переменных.

По-твоему, если человек понимает это очевидное утверждение, он против тестирования? Да ты болен, батенька.

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

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

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

Даже если они покрывают весь код (покажи масштабные проекты с 100% покрытием)

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

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

я немного неправильно понял, как Торвальдс и его приспешники(lkml). а так то да. а проблема есть.

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