В инструментарий Polkit, используемый в дистрибутивах для обработки авторизации и определения правил доступа к операциям, требующим повышенных прав доступа (например, монтирования USB-накопителя), добавлен бэкенд, позволяющий использовать встраиваемый JavaScript-движок Duktape вместо ранее применяемого движка Mozilla Gecko (по умолчанию как и раньше осуществляется сборка с движком Mozilla). Язык JavaScript в Polkit используется для определения правил доступа, которые взаимодействуют с привилегированным фоновым процессом polkitd при помощи объекта "polkit"...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56578
УРАUPD: Блин, там для сборки этого ducktape нода похоже нужна. Впрочем все равно лучше чем mozjs
UPD2: Только для мастера. Релиз без неё.
котлеты против макаронов ?
лучше без этого попаужаса вообще, да ещё в таких места.но хотите жевать сопли обезьян - жуйте. а нормальные люди это всё просто выпилят из системы
Так выкидывай, опенсорс, все исходники доступны, EULA никто подписывать не заставляет. Свобода! Но нет, ты только на опеннете в комментариях ноешь.
А вот и выпилил. А сам-то уже перестал пить коньяк по утрам?
А в чём проблема выкинуть? У меня в генте этой хрени отродясь не было и не будет
Открываешь репо polkit а там> pkexec: local privilege escalation (CVE-2021-4034)
Погодите, так ведь он для этого ж и предназначен? Программа для получения доступа к повышенным привиллегиям в обход стандартных юникс-механизмов - предоставила кому-то к ним доступ? Ну ахренеть, я изумлен.
> Погодите, так ведь он для этого ж и предназначен?И сколько платят безопасникам за нахождение дыр в дуршлаге? Думаю, прибыльная работа.
>> Погодите, так ведь он для этого ж и предназначен?
> И сколько платят безопасникам за нахождение дыр в дуршлаге? Думаю, прибыльная работа.нервная очень, а печень небесконечная.
Попробуй вот, перечитать вслух (желательно - без выражения, за выражения из уважаемой конторы и попереть могут) и заметить где подвох:Software Description:
- policykit-1: framework for managing administrative policies and privileges
Summary:
policykit-1 could be made to run programs as an administrator.- то ли это просто вывод apt show, то ли это USN? Мне вот вредно столько бухать чтоб отличать с первой попытки.
ух тыж... ducktape реально классная реализация жабаскрипта, по идеологии чем-то похож на sqlite - тоже только один Хидер и один сырец. встраивать такие модули в свой проект - одно удовольствие. правда нужно какое-то время чтобы привыкнуть к стековой машине (API там весьма далёк от классики жанра), но если разобраться (занимает день с перекурами если не торопиться) - то потом можно расширять функционал движка до бесконечности :)
API у него действительно классное. Но я бы предпочёл обёртку над SpiderMonkey.
А там сильно нужен джаваскрипт вообще?
Миллениалы не понимают конфиги вида ключ-значение, им надо обязательно писать ифы. А на жававскрипте вместо простенького язычка для встраивания (кто сказал луа?), потому что другого они не умеют.
иногда надо делать конфиги чуть более структурированными, чем просто плоская портянка, для таких случаев json очень хороший вариант: легко читается, минималистичен по дополнительным символам
(неловкая пауза) а как связаны движок джаваскрипта и json в конфигах?
IMHO QuickJS от Фабриса Белларда покруче будет чем дактэйп
Таки почему же?
> Таки почему же?Из малышей он супортит больше фич из ECMAscript ну и продуктивность:
нет
> нетСпасибо за досканальное разьяснение !!!
Вот и пришла хана polkitв такие вещи пихать попаскрипт - хоронить
Хорошо что нормальные дистры есть, без этого ауна намертво прикрученного
> Вот и пришла хана polkit
> в такие вещи пихать попаскрипт - хоронитьа он, внезапно, там уже давно, до добавления duktape использовался mozjs, для сборки которого нужны python, llvm, rust и ведро соплей девственниц.
та внезапно по барабану. у меня polkit вообще в системе нету и ниразу не понадобился
Зато прог к этому не прикрученых все меньше.
вагон и маленькая тележка. почти всё не прикручено у меня этого polkit вообще нету
Единственное, что к нему прикручено - это DE всякие. Смысл которых лично я не понимал вообще никогда.
>Вот и пришла хана polkit
>в такие вещи пихать попаскрипт - хоронитьТак JS в нём отродясь был, только от Мурзилы. Но свежие версии SpyderMonkey хотят собираться Растом.
> Так JS в нём отродясь был-rwxr-xr-x 1 root root 9980 Nov 5 2011 /usr/lib/polkit-1/polkitd
ты уверен что в нем поместился js? Чудеса микроминиатюризации, не иначе.Но идея, конечно, и изначально была идиотской. Хотели UAC какввенде. Впрочем, в венде там хотя бы нет js вместе с мурзилой целиком.
>> Так JS в нём отродясь был
> -rwxr-xr-x 1 root root 9980 Nov 5 2011 /usr/lib/polkit-1/polkitd
> ты уверен что в нем поместился js? Чудеса микроминиатюризации, не иначе.https://gitlab.freedesktop.org/polkit/polkit/-/blob/0.111/NEWS
> Highlights: The JavaScript interpreter is now mandatory. Both js185 and mozjs17 versions of SpiderMonkey are supported.
Надо было задание правил сделать декларативно просто, чтоб не было возможности в алгоритмы.
В той версии - так и было. Но тогда получалось недостаточное какввенде - поэтому добавили ж0поскрипт.
Божечки. Ну зачем? Почему не более подходящие, для системной компоненты вещи. Ну хочется вам встроить поддержку логики, так возьмите ну тот-же LUA.
Луа слишком сложный язык.
А чем JavaScript не подходящий? Он для этого был создан. Реализация отличная, настоящий embedded. Потребляет очень мало.Наверное это в 💯 раз лучше чем bash портянки (но на них тут никто не ругается).
И он во много-много раз быстрее недоязыка bash.
запомни: скриптовать что-то сложное принято исключительно на самых тормознутых языках. Например на баше, где "всё есть строка". Или на пыхе, -- писать тормозкрипты пробельчиками. Куда ты тут лезешь со своим яваскриптом?
В php очень быстрый интерпретатор, даже без jit
Всем хорош. Одна только проблема. polkit до мержа использовал mozjs сиречь spidermonkey, который для себя требует дохера зависимостей рантайма и билда. Но теперь, когда они переехали на duktape, это и в самом деле что-то близкое к embedded.
Тебе всё равно Firefox ставить, так что на десктопах SM оптимальнее, ибо и JiT, и JS нормальный, и памяти не жрёт дополнительно, ибо у тедя Firefox всё равно перманентно запущен.
> Тебе всё равно Firefox ставить, так что на десктопах SM оптимальнее, ибо
> и JiT, и JS нормальный, и памяти не жрёт дополнительно, ибо
> у тедя Firefox всё равно перманентно запущен.Т.е. тебя не смущает, что в зависимостях там mozjs-78 - отдельный движок как и то, что JIT для пары строк с правилами - никуда не уперся?
>Наверное это в 💯 раз лучше чем bash портянки (но на них тут никто не ругается).Я ругаюсь например.
Ну и так себе аргумент. Всё что угодно лучше баша.>А чем JavaScript не подходящий? Он для этого был создан.
Даже не знаю для чего он был создан.
Не то чтобы это был ужасный язык если смотреть в вакууме.
Но я слышал что у него есть некоторые проблемы с реализацией вызванные дизайном самого языка.
Ждем от вас дистрибутив линукса, в котором bash заменен на жабоскрипт.
> Ждем от вас дистрибутив линукса, в котором bash заменен на жабоскрипт.не надо! А то так и сделают.
>> А чем JavaScript не подходящий? Он для этого был создан.
>
> Даже не знаю для чего он был создан.
>Он был создан для того, чтобы рисовать «спецэффекты» в окне браузера: танцующие снежинки, цветные переливы, «динамические меню» и так далее. В своё время, до очередного «изобретения» квадратных колёс в виде HTML5, это называли DHTML.
Это да, его так намеревались использовать.
Но вопрос был немного в другом.
> Это да, его так намеревались использовать.При таком его использовании - и вреда от него не было никакого.
Но, к сожалению, гугль решил иначе.
Какие?
> Не то чтобы это был ужасный язык если смотреть в вакууме.Ужасный, ужасный.
Дизайн джаваскрипта зело неудачен, хуже почти всех известных используемых языков. И благодаря кошмарному дизайну жс учит своих программистов отсутствию красоты и стройности кода. Что, в свою очередь, ведет к полному отсутствию культуры программирования и соответствующей кривизне "кода".
Чтобы эту ситуацию хоть как-то исправить возникла куча языков поверх жс (ибо браузеры только его и умеют выполнять), более менее исправляющих этот идиотизм под названием "джава-срипт".
Примеров вокруг - миллионы.
Назови хотя-бы 5
https://github.com/jashkenas/coffeescript/wiki/List-of-langu...
очередной хелловорлдщик Урри вещает свое ыкспертное мнение 👍
Хелловорлдщик Урри, по крайней мере, хелловорлды пишет. В отличие от некоторых чисто теоретиков.
Посему у него экспертиза несколько повыше будет, да.
> Ужасный, ужасный.
> Дизайн джаваскрипта зело неудачен, хуже почти всех известных используемых языков.Может и соглашусь пожалуй.
Ну, на коротеньких трехстрочниках норм вроде. Для того вроде и предназначен.
Всё же мне больше непонятно зачем его вообще нужно было изобретать.
Ну так-то я могу переписывать огромные баулы JS (на TypeScript) кода с очень высокой вероятностью что это всё будет корректно работать.С и С++ такого и не снилось.
> Ну так-то я могу переписывать огромные баулы JS (на TypeScript) кода с
> очень высокой вероятностью что это всё будет корректно работать.Вы большой молодец.
> С и С++ такого и не снилось.
Хвала Аллаху!
Вы надеюсь тут не пытались провести аналогию между JS - TS и C - C++ ?
Конкретный пример - взял Luxon https://github.com/moment/luxon - супер-популярная библиотека работы с датами и временем на чистом JS - переписал на TypeScript.Нашёл несколько десятков ошибок во время добавления типов.
https://github.com/breeffy/timely/pull/4 - +2,233 −1,231 строк изменилось.
Ни разу не запускал тесты, но на 99% уверен что ошибок будет мало.
Теперь взял чистый С - написал несколько строчек кода открытия и создания файла - 40 минут внимательно читал документацию по open, чтобы правильно его вызвать (до конца не понял). Ошибка на ошибке, одни флаги O_CREAT | O_DIRECTORY можно, другие O_RDONLY | O_WRONLY нельзя.
Вчитываться надо в каждое слово (!) и то сложно понять. Где-то в дeбрях документации про https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use.
С++ также и хуже - чтобы писать корректный код нужно вчитываться в cppreference. Но я всё равно до конца не понимаю все варианты перезагрузок - что, где, когда, зачем. Куча исключений и описаний - ни до конца понять, ни запомнить это просто невозможно.
Написать корректный код практически невозможно (заваливать баблом, тестами, санитайзерами). На это фоне JavaScript (+TypeScript) просто блестит как яркая вкусная сладкая конфетка.
TypeScript ЗАСТАВЛЯЕТ писать корректный код. Его система типов настолько крута, насколько это возможно для динамического языка.
Например в Java есть NullPointerException, в TypeScript нет - т.к. null это отдельный тип (и его в коде нужно обрабатывать).
Вот и совершенно типичнейший комментарий джаваскриптера - "я не хочу учиться, я хочу чтобы само рррраз и получилось".Вы, кстати, rust не пробовали? Там ваших коллег подавляющее большинство.
По-существу ответить нечего. Понятно.Добавлю что автор языка Zig бывший JavaScript-ер, это по поводу навешивания ярлыков.
>> *концепты владения, времени жизни, заимствований*
> Вот и совершенно типичнейший комментарий джаваскриптера - "я не хочу учиться, я хочу чтобы само рррраз и получилось".
> Вы, кстати, rust не пробовали? Там ваших коллег подавляющее большинство.Какой объемный выброс газа! Вы молодец! Так держать!
> Всё же мне больше непонятно зачем его вообще нужно было изобретать.Лично я не ходил проверять, но на аналогичные вопросы мне здесь же, на опеннете, цитировали айка, где он утверждал, что это было очень срочное и совершенно временное решение. Другими словами - быстро наг_внокодил в расчете потом переделать, но так и осталось.
Они не могут взять Lua, потому что там уже был JS. Придётся правила переписывать — никто не хочет.
lua - такое говно, что к ней лучше не прикасаться и избегать at all costs. Такого геморроя как с луной я давно не обретал. Дизайнили явно лунатики.
Вот уже сто раз ловил себя на том, что очень не хватает простого удобного скриптового языка, который не пытается быть всем.Нет, не луа с его функциональщиной. Не js с его странностями. Не питон с его кучей "особенностей". А что-то вроде бейсика - простое, как топор, в принципе не пригодное для написания сложного кода, но не провоцирующее, как шелл, выстрелы в ногу. Желательно - строго типизированное, чтобы нельзя было вместо числа засунуть яблоко а потому думать "а что ж не так".
> не пригодное для написания сложного кода
> строго типизированноеПараграфы соблюдены.
Не пойму, чем так не нравится JS. Успешно применяется в самых неожиданных областях. explorer.exe в вантуз-98 имел боковую панель с голубым уголком -- он управлялся из JScript. DAZ Studio позволяет себя скриптовать и подгружает свои ассеты через "Daz Script", который тоже ECMAScript. nginx/njs, nodejs, react native... Все применяют, а у тебя, видишь ли, "странности". А обернув в тайпскрипт, получаешь свою типизацию.
А со "странностями" в яваскрипте я сталкиваюсь ровно один раз в 3-5 лет -- когда мне по этим "странностям" задают вопросы на собесах.
Как альтернатива есть Vala, тоже может работать в скриптовом режиме. Всяко получше всяких перлов-башев-пыхов.
Вы какой-то со странностями...
Кстати, из прошлых срачей "parseInt(Infinity, 19)"
ну и что это? снова гипотетическая проблема, которую встретишь только в собесах, и которой нет даже в хелловорлдах начинающих?declare function parseInt(string: string, radix?: number): number;
Дай угадаю - программист хелловорлда, да?
дай угадаю: не умеешь в тайпскрипт и держишь в одних и тех же переменных значения самых разных типов, да?
> дай угадаю: не умеешь в тайпскрипт и держишь в одних и тех
> же переменных значения самых разных типов, да?1. Тайпскрип НЕ жаваскрипт.
2. И подумать никто не может чтобы с вами соревноваться в жаваскрипт программировании.
Продолжай оправдывай свое незнание тайпскрипта и писать абы как, присваивая ежика зайчику. После этого не забудь пожаловаться на то, что у тебя даже хелловорлды не работают.
> Продолжай оправдывай свое незнание тайпскрипта и писать абы как, присваивая ежика зайчику.
> После этого не забудь пожаловаться на то, что у тебя даже
> хелловорлды не работают.Вы не понимаете как работает форум? Вы говорите сами с собой, у вас шизофрения?
Или вы бот?
Не запускала, но ответ 19?
А ещё в js typeof NaN === "number"
И "1" + 1 === "11"
> А ещё в js typeof NaN === "number"Подучи матчасть, в частности IEEE 754. Берем например Java:
static double NaN
A constant holding a Not-a-Number (NaN) value of type double.Берем пых:
>>> type(float('nan'))
<class 'float'>
Все странности с типами решает typescript который такую ерунду просто не скомпилирует.
Слабая типизация в js поле для бесконечных манипуляций вида засунуть ерунду в ерунду и получить ерунду. JS ужастный!!!111
В сишечке вот тоже слабая типизация хоть и статическая, но её тут нахваливают
> Слабая типизация в js поле для бесконечных манипуляций вида засунуть ерунду в
> ерунду и получить ерунду. JS ужастный!!!111Типичный js'ник - ноль знаний (по типизации, в данном конкретном случае) и напрочь сломаны блоки мозгов отвечающие за причинно следственные связи.
"Не волгу, а москвич; не в лотерею, а в покер; не выиграл, а проиграл." (с)
Вы путаете причину и следствие - JS объективно ужасный, и именно поэтому можно "засунуть ерунду в ерунду и получить ерунду", а не наоборот. И не "слабая типизация в js", а "идиотские правила типизации в js". Слабая типизация в пхп, например, вполне себе живет и не кашляет, не так ли? А динамическая в питончике никому не мешает."!!!111" (с)
p.s. тайпскрипт рулит. если бы его еще прямо в браузер вкорячили, чтобы не приходилось транслировать в жс.
функция parseInt преобрабразует первые числовые символы в строку. Это даже отравдано учитывае повсеместное распространение в веб значений вида "11px", "2em"функция parseInt принимает в качестве первого аргумента строку, поэтому константа Infinity типа number автоматически преобразуется в строку "Inifinity"
мы указали десятнацатиричную систему счисления тоесть символы /0-9a-i/i это цифры, в нашей строке первая I это единственное число, а дальше идет строковая часть. i в десятичной системе счисления это 18
Правильный ответ в итоге 18, а не 19, но наверное на собеседовании мне бы этот ответ засчитали так как спрашивают еще и почему так получилось.
Молодец, практически всё правильно.
А говорят JS программисты тупые.Они, худо бедно, знают свой 👅, в отличие от Си-шников. Которые даже Hello World в прошлой ветке были не в состоянии написать.
Какие прекрасные встроенные грабли.
просто чтобы программировать на любом языке, нужно знать стандартную библиотеку, хотя бы минимально...
Чтобы вываливать продукты своей жизнидеятельности в комментарии, ничего знать не нужно.
Ладно infinity, но вы только посмотрите какой js ужастный!
parseInt("ololo", 36)
41322444
parseInt(undefined, 36)
86464843759093
Не нравится тем, что он сложный для нормальных скриптовых задач. Мало того, что куча странностей с преобразованиями, всякие прототипные наследования, так ещё и слишком много хитрой функциональности вроде футур и подобного.Со "странностями" вы сталкиваетесь каждый день, только привыкли.
> куча странностей с преобразованиямиГипотетических. На практике их нет ни у кого, включая хелловорлдщиков. Странности -- это поле деятельности авторов статей про "странности яваскрипта", их затем за 5 минут до собеседования вычитывают интервьюеры (потому что сами тоже не сталкивались!) и задают вопросы, чтоб снизить зарплатные ожидания, типа "ну ты же не знаешь, что будет, если засунуть строку в винегрет, а винегрет умножить на пылесос, а это основа основ".
> всякие прототипные наследования
> хитрой функциональности вроде футур и подобногоВещи полезные, но если СЛОЖНА/НИАСИЛИЛ, то ими пользоваться не обязательно и до определенной степени можно игнорировать.
Не. В данном случае хочется язык, на котором сложно написать нельзя. Который учится полностью за час (ладно - день) и после этого - никаких неожиданнстей - либо оно работает ровно как ожидали либо внятно ругается. Поэтому ничего сложнее тупого императивного стиля - никаких лямбд, никаких наследований, конструкторов, явной работы с памятью, исключений и всего прочего, что я очень люблю когда пишу продакшн код с какой-то замтной сложностью.
Тебе Zig нужно попробовать. Никаких исключений, даже строк нет (есть []u8 массив, можно считать что UTF8 строка, Но это от тебя зависит).Нет перегрузки и т.п.
Но он не альтернатива и замена скриптовым 👅. Они как раз должны быть "сложными", чтобы раз функцию в функцию в замыкание и готово.
> Тебе Zig нужно попробовать.Какой-то раст недоделанный. http://rosettacode.org/wiki/Category:Zig
```
pub fn main() !void {
const stdout = @import("std").io.getStdOut().writer();
var doors = [_]bool{false} ** 101;
var pass: u8 = 1;
var door: u8 = undefined;
while (pass <= 100) : (pass += 1) {
door = pass;
while (door <= 100) : (door += pass)
doors[door] = !doors[door];
}
for (doors) |open, num|
if (open)
try stdout.print("Door {d} is open.\n", .{num});
}
```
функцию в функцию в замыкание - и в Polkit такое. А потом кто-то будет судорожно пытаться понять, что за парвила вы там накрутили. Или вы сами через пару лет будете мучительно пытаться сообразить, что это было
> хочется язык, на котором сложно написать нельзяНу возьми HQ9+, че:
- ничего сложнее тупого императивного стиля: check
- никаких лямбд: check
- никаких наследований: check
- конструкторов: check
- явной работы с памятью: check
- исключений: check
- и всего прочего: check
там есть печать hellow world и квайн, а значет пункт "и всего прочего" нужно считать невыполненным
Возьми лисп (а точнее scheme, ибо cl - буэ).Учится за 10 минут (я лично объяснял синтаксис языка дошкольникам за 15 минут и они все понимали).
Никаких неожиданностей - наследований, конструкторов, явной работы с памятью, исключений и всего прочего. Хотя, при желании, все это можно и соорудить.Даже без лямбд можно обойтись. Писать чистую императивщину.
> Не. В данном случае хочется язык, на котором сложно написать нельзя. Который
> учится полностью за час (ладно - день) и после этого -
> никаких неожиданнстей - либо оно работает ровно как ожидали либо внятно
> ругается. Поэтому ничего сложнее тупого императивного стиля - никаких лямбд, никаких
> наследований, конструкторов, явной работы с памятью, исключений и всего прочегоПаскаль?
Только не "современный паскаль" в стиле Delphi/Oxygene/FPC - а "старый ламповый", как описан дедушкой Виртмм в Pascal Report 1974 года. Выкинуть указатели, добавить динамические массивы и строки, как их частный случай.
>Как альтернатива есть Vala, тоже может работать в скриптовом режиме. Всяко получше всяких перлов-башев-пыхов.В Vala есть своя странность - разрабатывается гномерами. А из этого могут последовать странности, которые всяким перлам-башем-пыхам и не снились.
Ну т.е. твоя мечта это питон?
Нет. Типов нет, зато всякие наследования, magic методы и тому подобное - есть.
Как это, нет типов? Он очень типизированный, вот в си, например, нет типов (есть сахар притворяющийся типами). Такие тонкости как наследование ромбиком тебе не понадобятся с таким подходом к вопросу.
Да вот так - нет. С точки зрения пользователя, по крайней мере. Не заставляет указать тип параметров функции и переменной. А скрипты - это то, что обычно не документируется, поэтому там читабельность возьмётся только если её гвоздями к языку прибить.
mruby хватит всем [pokerface]
Закопайте стюардессу.
> А что-то вроде бейсика - простое, как топорFreeBASIC ? Нет?
> в принципе не пригодное для написания сложного кода,
У каждого свои понятия сложности. Инструмент выбирается в зависимости от задачи, это не жена чтоб всю жизнь одной наслаждаться.
> но не провоцирующее, как шелл, выстрелы в ногу.
А можно пример провокации в шеле, где прям раз - и в ногу ?
Бейсик уж слишком архаичен в плане синтаксиса, но да, как вариант.Понятие сложности в данном случае как раз должно быть общим - то есть чтобы, с одной стороны, сам движок был простейшим и, соответствкенно, минимально уязвимым, а с другой - чтобы не пытались на скриптах ваять то, что невозможно прочесть и понять.
С моей точки зрения - это означает отсутствие наследования с инкапсуляцией, разного рода асинхронности, функциональщины, строгую, но совершенно минимальную типизацию, отсутствие неявных преобразований но полный набор явных с удобным синтаксисом и тому подобное - чтобы простое было писать легко, а сложное - практически невозможно. Иначе будет очередной питон или php.
В шеле - всё, что связано с кавычками - самый яркий пример, ну и то, что всё тащим через строки и, соответственно, по типам никакого контроля.
"back to the basics" - возмоте один из вариантов паскаля, благо их за 50 лет достаточно накопилось. Создавался он вот как будто специально как раз по Вашим запросам.
Чем клепать 1001-й вариант (а там, как минимум, надо добавить какие-никакие объекты, хоть и без наследования и приватных членов и поломать "тело программы") можно уж что-то чуть менее многословное наваять.Если честно - у меня нет сейчас проектов где надо что-то скриптовое вкручивать, так что всё равно это так, хотелки в воздух. Хотя в своё время наматерился.
> чтобы простое было писать легко, а сложное - практически невозможно.Сорри, но слышится ка - "Хочу белое, но что бы было черное"
> Иначе будет очередной питон или php.
А чем пых не угодил, писать легко, документация ИМХО одна из лучших. Если скомпилировать статически и ужать upx-ом, так по современным меркам 12мег вообще ничто.
> В шеле - всё, что связано с кавычками - самый яркий пример,
> ну и то, что всё тащим через строки и, соответственно, по
> типам никакого контроля.Так то не язык програмирования, а шелл !
Зачем там типы?
И где это нет проблем с кавычками, в каком таком чудо языке ?Надо простое но с типами, ну так tinycc или еще лучше chibicc, 8 kilobytes и будет работать везде
как раз запрос "простое легко, а сложное - невозможно" реализуется автоматом если не пихать сложные конструкции в язык. Поди напиши сложный софт если у тебя ни указателей ни наследования нет, например.Пых не угодил ровно этим, плюс тянущимся сто лет легаси. Уж скорее от питона половину отломать.
По нынешним временам плевать на килобайты, а для скриптов - и на скорость плевать. Но сишный компилятор даст доступ ко всему сишному маразму и необходимости для пользователя понимать штуки врле выделения памяти и связи массивов и указателей.
P.S. В своём роде забавно, что никто даже не понимает, о чём речь. А речь о скриптовом языке в своём изначальном смысле - на котором не пытаются писать "большой" софт, а пишут мелкие конфиги или кастомизации, в том числе это делают power user'ы, к программированию никакого отношения не имеющие. На котором в идеале нельзя (или хотя бы крайне сложно) написать что-то непонятное с первого взгляда. Который как читается - так и работает, а где так сделать не выходит - там его просто не надо использовать. Который, соответственно, дожен быть прост как топор в реализации с минимальной attack surface при фактически отсутствующих требованиях к эффективности, потому что ничего большого/часто исполняемого на нём просто не должно быть.
Вот на полке стоит книжка Вирта по Оберону, там вся грамматика языка на две с половиной страницы помещается, потомы что по убеждению автора, системный язык должен одинаково хорошо подходить как для ядра, так и для скриптов между программами.
Правда, история этого мира потом пошла немного другим путем, почему-то голландцы оказались популярнее швейцарцев :)
> как раз запрос "простое легко, а сложное - невозможно" реализуется автоматом если
> не пихать сложные конструкции в язык.Т.е вы хотите сказать что за пол века люди так и не придумали то, что вам надо?
> Пых не угодил ровно этим, плюс тянущимся сто лет легаси. Уж скорее
> от питона половину отломать.Так не используйте в пыхе то, что не надо и все, и будет вполне понятная програма которая читается всем кто умеет читать.
И о каком легси речь? Там страшилки уже давно подчистили и язык стал довольно приличным, который угодит кому угодно, начиная от консоли и до веба, да и скорость у него одна из луших среди интерпритаторов. А то, что находят до сих пор баги, так приблизся к его популярности на любом языке и начут находить баги тоже пачками.
На счет питона, его тоже можно, при условии что юзеры будут использовать одинаковые настройки отступов, что в реальности убивает все его плюшки, а также комипильнуть его без библиотек и будет работать точно как вы сказали - как топор, т.к. рано или поздно понадобится тылза которой нет из каробки
>[оверквотинг удален]
> речь. А речь о скриптовом языке в своём изначальном смысле -
> на котором не пытаются писать "большой" софт, а пишут мелкие конфиги
> или кастомизации, в том числе это делают power user'ы, к программированию
> никакого отношения не имеющие. На котором в идеале нельзя (или хотя
> бы крайне сложно) написать что-то непонятное с первого взгляда. Который как
> читается - так и работает, а где так сделать не выходит
> - там его просто не надо использовать. Который, соответственно, дожен быть
> прост как топор в реализации с минимальной attack surface при фактически
> отсутствующих требованиях к эффективности, потому что ничего большого/часто исполняемого
> на нём просто не должно быть.Вы только что описали /bin/dash (И не в коем случе баш, это уже изврат) ну или покруче busybox. И именно поэтому, их не напичкивают стероидами, а держат самый минимальный набор для програмирования. Вы его просто подучите, он сперва вроде как странный, но когда поймешь, то для администрирования систем ну очень редко когда надо что то еще.
Не. Подход "бери подходящее подмножество и не парься" работает для профеесиональных программистов в проектах с прописанными стайлгайдами, но ни хрена не работает там, где либо не профи либо нет контроля - стили, ревью, вот это всё.Для встроенных языков не может понадобиться "тулза, которой нет из коробки" - это решается на уровне приложения-хоста. Для не встроенных - если что-то такое попадается- бери что-то большое вроде того же питона или JS. Но на практике 99% задач не требуют ничего большего, чем совершенно базовые средства - работа с файлами (можно чтобы даже симлинки отдельно не выделяли), строки (и регэкспы туда же), минимальная математика, массивы/словари и простейшие "классы" а-ля struct + сгруппированные в ней функции чтобы не мешать всё в одну кучу.
О шеллах не будем, там одних "логических операторов", эмулируемых чёрт знает из чего, хватит, а читабельности во всяких $чёртзнаетчто вообще никакой. Советовать мне их подучить - это забавно, да. Правда запоздало лет на пятнадцать. как шелл - оно вменяемо. Как скрипт - чудовищно, почему я давным-давно взял за принцип что-либо больше пяти строк сразу делать на перле (ну или сейчас можно на питоне, но я к перлу привык).
> но ни хрена не работает там, где либо не профи либо нет контроля - стили, ревью,
> вот это всё.Кажется, я начинаю понимать в какую сторону ветер. Для такой аудитории придумали очень хороший солюшн: https://scratch.mit.edu/
Просто, понятно, нечего серьезного не сделать(хотя я видел проекты, которые очень даже ого-го), но работать будет. Сорри, но типов там не будет.
> Но на практике 99% задач не требуют ничего большего, чем
> совершенно базовые средства - работа с файлами (можно чтобы даже симлинки
> отдельно не выделяли), строки (и регэкспы туда же), минимальная математика, массивы/словари
> и простейшие "классы" а-ля struct + сгруппированные в ней функции чтобы
> не мешать всё в одну кучу.Ну, регулярки, это уже не для той категории юзеров, которую вы описали хотите таргетить.
А желание иметь "классы", - это вы сами себе тогда противоречите.
Классы и вообше абстракции ООП, - были придумано исключительно чтоб народ не наступал друг другу на пятки когда больше чем один дев или чувак с короткой памятью, не способный запомнить имена функций и переменных. Иметь классы и "наследования"(которых вы не хотите) это все ягодки одного поля - ООП. И тут вы либо тянете всю кухню ООП, либо забудьте об успехе такого проекта.> О шеллах не будем, там одних "логических операторов", эмулируемых чёрт знает из
> чего, хватит, а читабельности во всяких $чёртзнаетчто вообще никакойКаждый раз, когда меня злит какой-то язык, я знаю 100%, что я просто его еще не понял, ну чуток практики и вся логика заложенная в язык становится понятна и проста.
Что там страшного? Там всего десяток символов запомнить что делают и все становится довольно понятно и и компактно
> Советовать мне их подучить - это забавно, да.
Раз вас раздражают "логические операторы", значит вы просто либо не часто пользуете шелл, либо не уделяли время на полное изучение, не через гугл, а как положено, по мэну и с практикой
> Правда запоздало лет на пятнадцать.
За 15 лет много чего можно забыть :)
> Как скрипт - чудовищно, почему я давным-давно взял за принцип что-либо больше пяти строк сразу делать на перле (ну или сейчас можно на питоне, но я к перлу привык).
Перловка к сожалению помирает и называть этот язык более понятным для категории людей которую вы описали - это издевательсво, а питон, ну если есть время переделывать скрипты и за это еще и платят когда очередной раз ломают совместимость, то скорей всего для той категории подойдет, а вот скрипты на шеле или том же awk будут работать десятилетиями и будут понятны всем кто уделил время на их изучение.
Да-да, правильно всё поняли. Вот в моём понимании всякие эмбедные язычки как вот здесь для полкита именно такими и должны быть - иначе там вс любом случае вылезет оверинжиниринг и свзяанные с ним баги.Реглярки - да, знаю, согласен, но уж слишком распространённая и при этом нетривиальная задача, и лучше брать что-то максимально описанное чем костылить своё и заново идти оп всем граблям, как в том же Lua (чьи паттерны в итоге и не знает никто толокм и слабенькие они).
Классы - смотрим на VB/VBA/1С - классы здесь - это, фактически, модули, группирующие функции и данные, связанные с общей функциональностью. Разумеется, никакого полноценного ООП. Именно для "чуваков с короткой памятью" и возможностью писать xxx.print для любого xxx.
Раздражает неконсистентность. В присовении пробел перед равно не ставь, в [] - наоборот, потому что оно скостылировано внешней командой, на пустоту проверь конкатенацией с дамми символом и так далее, не забудь всё, что можно, заключитть в кавычки... Я понимаю, почему так - но не понимаю, почему не забить на это "почему" и не сделать консистентно и удобно. Хотя бы инвертировать подход к кавычкам - то есть для сплита строки по вайтспейсу применять явный оператор, а не как сейчас. ну, то есть * или там $1 чтобы возвращал строку вне зависимости от наличия пробелов, а если её хочешь сплитнуть - так и пишешь - ${1}:split или ещё какой синтаксис.
Перловка не помирает, а померла. Я на ней пишу потому что я её уже знаю, а советовать, разумеется, никому не стану. Питон и совместимость - это для распространения проблемно, а для домашних скриптов в рамках одной системы ни черта не ломается, чай, не на арче же сидишь, а на lts каком-то. А раз в десять лет поковырять - скорее на пользу. Да и после перехода с 2 на 3 ничего там радикального нет. Но если не нравится можно тот же js с нодой взять, разницы никакой. Речь о том, что не надо пытаться писать однострочник и проект на десять тысяч строк на одном зяыке - там требования совершенно разыне.
> Раздражает неконсистентность. В присовении пробел перед равно не ставь, в [] -
> наоборот, потому что оно скостылировано внешней командой, на пустоту проверь конкатенацией
> с дамми символом и так далее, не забудь всё, что можно,
> заключитть в кавычки... Я понимаю, почему так - но не понимаю,Я с вами полностью согласен, что поначалу - дико, особено если в програмирование пришел с элитный языков, но когда поймешь, - "почему и как", то вполне можно жить и что самое главное - быть уверенным, что завтра при очередном апдэйте ничего не сломается. Вот это последнее - "странная" консистенс и есть вишенка на торте, пусть хоть и кислая, но всегда одно и тоже
> Речь о том,
> что не надо пытаться писать однострочник и проект на десять тысяч
> строк на одном зяыке - там требования совершенно разыне.Так и я про то же самое - не нужен универсальный микроскоп, которым и гвозди можно забить и науку поковырять. На каждую задачу - свой тулз. Я согласен что, надо бы хотя бы парсер строки от awk перенести в шел, чтоб убрать странность с пробелами, но с другой стороны, вы себе не представляете, сколько этих самых скриптов надо будет переписать, утвердить и доказать - "а зачем". Консистенс - значительно более важная штука чем удобство
Tcl. Проще некуда, типы добавляются расширением, классический язык конфигурации и настройки. Иногда не нужно изобретать велосипеды, когда есть готовое, отлаженное решение.
Сильно инопланетный. По идее нужно что-то такое, что будет понятно любому, кто в школе if-then-else учил.
Ну так и используй Паскаль. Что мешает?
Есть все, что ты хотел.
> Ну так и используй Паскаль. Что мешает?То что он в школе учил basic, наверное?
Паскаль как скриптовый язык - уж больно странная идея, не находите?А если серьёзно - я имею в виду, что там не должно быть никаких сложных конструкций вроде исключений, поддержки асинхронности и подобного, всё должно работать так, как ожидаешь с первого взгляда.
> А если серьёзно - я имею в виду, что там не должно
> быть никаких сложных конструкций вроде исключений, поддержки асинхронности и подобного,
> всё должно работать так, как ожидаешь с первого взгляда.Ну так это же /bin/dash !
Или возьмите то же awk, вполне приличный язык для задач которые вы описали, на котором можно сделать довольно таки много даже не вызывая стороние инструменты и который очень даже понятен.
На кой она вам эта типизация здалась, для задач которые вы описали ?
Идеи одна другой краше. Я о читабельности и предельной понятности (фактически - о том, чтобы всячески затруднить написание непонятного кода), а мне в ответ - то шелл то вообще awk.Для чего типизация:
1) для того, чтобы, открыв скрипт через два года сходу понять, что там вообще происходит и какую сущность куда пихают.
2) чтобы то же самое было понятно при открытии чужого скрипта.
3) чтобы не было стимула костылировать "а мы сдеаем функцию, окторая умеет принимать десять вариантов чего попало и на них реагировать"
4) чтобы структурировать код - если функция принимает Book то Audiofile туда не запихнёшь. А если сожрёт всё и даже случайно будет работать со всем, что имеет Title - то шансов, что получится какой-то недокод, ломающийся в непредсказуемые моменты, куда больше, а нормального тестирования там не будет потому что на фиг не надо. Дублирование же кода в той области применения, о которой я говорю (мелкие встроенные скрипты и мелкая автоматизация) не критично совершенно.
> то шелл то вообще awk.А что awk? У него кстати попроще будет семантика и нет жестких ограничений с обязательными пробелами или их отсутствием как у шелов. Вы откройте мэн, язык С подобный и очень простой, но в тоже время имеет все фичи которые вы хотели.
> Для чего типизация:
> 1) для того, чтобы, открыв скрипт через два года сходу понять, что
> там вообще происходит и какую сущность куда пихают.Даже в С, что не парится с этим, люди давно придумали префиксы:
strVar, sVar, nVar, iVar, pVar...
> 2) чтобы то же самое было понятно при открытии чужого скрипта.Ну, да, перечитаь весь код, найти все дефайны переменых, запомнить по типам - это значительно "проще"
> 3) чтобы не было стимула костылировать "а мы сдеаем функцию, окторая умеет
> принимать десять вариантов чего попало и на них реагировать"Это накостылят на любом языке если идиоты, так что не поинт
> 4) чтобы структурировать код - если функция принимает Book то Audiofile туда
> не запихнёшь.Вы о чем вообще? Вы хотите ОЧЕНЬ простой ЯП, но собираетесь процесировать бинари потроха музыки?
> ...кода в той области применения, о которой я говорю (мелкие встроенные
> скрипты и мелкая автоматизация) не критично совершенно.В мелких скриптах - типизация ???
И это вы называете простым читаемым кодом, где будет мазня символов сперва описывающих, потом применямых сущностей ?
Сорри, но категорию людей которых вы описали будут юзать сиё чудо, надо будет сперва обучить, а не сваливать на них концепты корпоративного програмирования.
А если они обучены, то им нафиг не сдался кастририванный ООП-образный шелл
Насчёт авка и шелла - сорри, но тут какое-то принципиальное непонимание. вы на моей памяти первый, кто их считает читаемыми и поддерживаемыми.Префиксы - штука необязательная и не контролируемая. Следовательно, работать будет только если стиль энфорсится - ревью и прочее.
"Перечитать весь код" в пару экранов (а больше эти скрипты и не должны занимать) - очень сложно, конечно.
Накостялят на любом языке, да. Но на описываемом - очень неинтересно быдет костылить, а у таких товарищей понты - основная мотивация.
Типизация. 95% из которой должен дать хост в готовом виде. И типы, в силу общей примитивности всего, тоже примитивные, поэтому там и обучать нечему будет - достаточно школьного РАЯ или Паскаля.
> Насчёт авка и шелла - сорри, но тут какое-то принципиальное непонимание. вы
> на моей памяти первый, кто их считает читаемыми и поддерживаемыми.Наверное мы из разных "сословий" :)
Подучите awk и вы поймете, насколько он силен в сис-админских делах> Префиксы - штука необязательная и не контролируемая. Следовательно, работать будет только
> если стиль энфорсится - ревью и прочее.Если разговор о том, что нужно разбирать чей то код, это значит вас уже более чем два, а значит договорится о одинаковом стиле либо можно либо нужно
> Накостялят на любом языке, да. Но на описываемом - очень неинтересно быдет
> костылить, а у таких товарищей понты - основная мотивация.Вы сравните на сколько больше писанины в ООП-е и функциональном програмировании. Зачем оно тем кто как вы говорите - ламеры. Вы их сперва должны обучить - "а зачем" эта абстракция.
Если бы вы когда нибудь преподавали програмирование, то вы бы знали, что даже банальный концепт переменной, по началу не доходит до всех, а вы их сразу и в ООП
> Типизация. 95% из которой должен дать хост в готовом виде. И типы,
> в силу общей примитивности всего, тоже примитивные, поэтому там и обучать
> нечему будет - достаточно школьного РАЯ или Паскаля.РАЯ - а это еще что за зверь ???
Ну так вот вы и нашли солюшен !
Проблема только в том, что на 99% машин его не будет установлено, а вот даш/бэш будет гарантийно везде и его более чем предостаточно для простой автоматики (если бить по рукам или просто быть в корпоративной среде, где правильный стиль, это -обязательно)
Нахожу. Но он полностью соответствует озвученным критериям выше.--
Лично я паскаль люблю, хотя и не использую уже лет 20.
Но вот год назад, где-то, с его помощью мой сын внезапно полюбил программировать.
Тогда Squirell - простой, Си-подобный, встраиваемый аналог Lua.
Из описания:dynamic typing
delegation
classes & inheritance
higher order functions
generators
cooperative threads(coroutines)
tail recursion
exception handlingВот в данном случае это всё - антифичи
> Из описания:
> dynamic typing
> delegation
> classes & inheritance
> higher order functions
> generators
> cooperative threads(coroutines)
> tail recursion
> exception handling
> Вот в данном случае это всё - антифичиЧуть выше вы хотели "классы", теперь - нет.
Я говорил о наследовании, а не о классах. Класс в минимальном виде - то есть структура с публичными данными и публичными же методами, которые не обладают никаким привилегиями относительно других функций,а просто сгруппированы вместе с данными - штука простая и полезная. Без наследования, конструкторов и прочих наворотов.
У меня такое ощущение что Вы подгоняете решение под ответ (go).
Но в "скриптовые" языки ни go ни python не пролезают по одной очень важной причине: чтобы просто выполнить из сценария какой-то внешний бинарь, надо писа́ть едва ли не полную обвязку к execve().В своё время там где "*sh маловато будет" был очень популярен perl. Но там не очень удобно с многопоточностью. А потом вообще "поколение пепси^W продвинутого клинского" принялось переписывать всё на python.
В общем, ПМСМ "портянки на bash" ещё долго останутся мейнстримом. Невзирая на полное отсутствие разделения кода и данных. (Вот это настоящий кошмар, а не "всё есть строка".)
> В общем, ПМСМ "портянки на bash" ещё долго останутся мейнстримом. Невзирая на
> полное отсутствие разделения кода и данных. (Вот это настоящий кошмар, а
> не "всё есть строка".)В одной хорошо известной конторе в европе, эту проблему решили жестко и просто:
В качестве шелла - только dash/sh (для совместимости с мэинфрэймами) а все данные - в статически скомпилированный sqlite3, а также разделили репрезентацию в отдельные файлы которые грузятся "контролером" через . (source) по нужности. В итоге получилась довольно таки шустрая, мультиплатформенная ><реновина с MVC парадигмой и надо отдать должное, довольно таки читаемая и понятная. В итоге система перекатывается через мажорные апгрейды без всяких поломок и работает без изменений на разных никсах как часики
> Класс в минимальном виде - то есть структура с публичными данными и публичными же методамиЗачем такая кастрация?
Это и не нормальный ООП и не нормальный "простой" инструмент.Классы нужны только для того, чтобы разделить большие куски кода, чтобы он не "нaезжал" именами переменных/функций друг на друга.
И все !
Мы еще лет 30 назад такое делали в ассемблере, чтобы не мешать друг другу. Делаешь структуру, в нее пихаешь указатели и по меткам получаешь так называемые "классы", в которых указатели сгрупированны в этой одной структуре, все что относится к одному "классу".Не нужно это все, если задача как вы ее расписали, - дебильно просто.
Зачем там классы ??? Простого фукционального програмирования более чем за глаза.
Чем больше букв, тем быстрее мозг теряет контроль над логикой(Тем более для тех, как вы сказали - новичков). Именно поэтому пытаются разбивать до "атомов" куски кода для программистов, чтобы люди концентрировались на маленьком куске кода. А если там классы, то это уже как миниум тянет на корпоративное изделие. Ведь именно для этого их и придумали, - чтобы разные группы не наступали на пятки друг другу.
>> Класс в минимальном виде - то есть структура с публичными данными и публичными же методами
> Зачем такая кастрация?
> Это и не нормальный ООП и не нормальный "простой" инструмент.Ну вообще - это и не классы. Это нормальный Си или Паскаль :-D
В Си это называется struct, а в Паскале - record.
Внутрь кладём "процедурные переменные" :-)C++, как говорят, в своих первых версиях как раз и был макро препроцессором к C
> В Си это называется struct, а в Паскале - record.
> Внутрь кладём "процедурные переменные" :-)
> C++, как говорят, в своих первых версиях как раз и был макро
> препроцессором к CО чем и разговор, - это просто абстракции, т.к. под капотом, ЦПУ понятия не имеет от таких заморочках
>TclRMS его не одобрил. Guile рекомендовал.
По политическим причинам, а еще подозреваю из-за NIH. Вместо него породили Bash. Guile - диалект Lisp со всеми плюсами и минусами, но да, его тоже посоветую для настроек и несложных скриптов.
> По политическим причинам, а еще подозреваю из-за NIH. Вместо него породили Bash.
> Guile - диалект Lisp со всеми плюсами и минусами, но да,
> его тоже посоветую для настроек и несложных скриптов.тогда, если guile - то ещё и nix наверное
а вокруг их использования, как "языков для настроек" уж два как-бы-линкуса накрутили, так что и proof of concept есть
>вместо ранее применяемого движка Mozilla GeckoGecko - это браузер. Движок - это SpiderMonkey.
*JS-движок
Реально? В системных компонентах линукса крутится JavaScript?Как фронтендер заявляю, эту псевдо операционную систему уже ничто не спасёт.
в нгинксе комплекс секьюрити чеки можно делать через njs
в бровзерах помнится бывали PAC-скрипты, возвращающие адрес прокси-сервера по урлу страницыНо здесь нельзя. Никак нельзя. Это другое. Ни в коем случае. Не-не-не. Вам не понять.
Между "можно делать" и "засунули по умолчанию" очень большая дистанция.
> бровзерах помнится бывали PAC-скрипты, возвращающие адрес прокси-сервера по урлу страницыда, бывали. они больше не будут. мерзкое было изобретение.
wpad IN A 127.0.0.1
Это не "системные компоненты". Это так, один из возможных вариантов обвязок, хоть и очень распространённый.
Все спасет. Выкинуть "==" и допилить нормально систему типов и базовую библиотеку будет вполне нормальный язык. А прикрутить LLVM и компиляцию, так вообще сказка будет, но это уже скорее для TypeScript работенка.
Хорошая новость. Полезная информация. Всегда было на него плевать и не нужен был в embedded его функционал вообще не нужен (нет таких задач, всё жёстко завязано), а если где в сестеме и был (например на ноуте), я его не замечал. Теперь знаю что там внутри. Полезно, познавательно.Это реальность. К сожалению.
Всем изветсно качество кода на javascript, не потому что он плохой, потому что там много зелёной школоты. Доказательством тому ежедневные сотни замечательных вещей в npm и прочих около javascript штуках. И проблема не в памяти как считают некоторые секты. К сожалению это реальность. И реальность такова что основные сейчас в Linux это дети из мира javascript.
Ну как есть. По крайней мере этот движок легче. Только те кто приписывает это к embedded, ребята, не позорьтесь. Календарьчик в телефоне на javascript для mail.ru это ещё не embedded. Да и вообще не embedded.
Но хоть стал легче. Может когда придут к более здравому решению. Опыт одной крупной компании уже доказал, что javascript в embedded (по крайней мере automotive) не место. Но дороги назад нет и они спешно делают велосипеды.
Учитесь на чужих ошибках, не повторяйте их. Удачи.
> Всем изветсно качество кода на javascript, не потому что он плохой, потому что там много зелёной школоты.Нет. Именно потому, что он плохой.
Не совсем понятно - в polkit js примитивный донельзя и по идее там любой js двиг. подойдёт. Про duktape встречал несколько упоминаний, что его можно использовать с polkit. Или тут именно вкомпилировать его в сам polkit?
> и по идее там любой js двиг. подойдёти много ты их знаешь, "любых"?
Именно вкомпилировать, как он тебе еще должен дурацкие правила исполнять? А что сервису отвечающему за повышение привиллегий как бы категорически нельзя исполнять никаких кривых скриптов, написанных обезьянками и вообще надо быть простым как палка - это как-то современные разработчики не осиливают.
Да и задача "сделать как в венде!" такого не предполагает.
Забавно вышло. Почитал новость: https://arstechnica.com/information-technology/2022/01/a-bug.../Зашёл на опеннет полюбоваться cpaчем вокруг неё. А тут cpaчик по поводу того, что polkit js-движок встраивает. До обсуждения 0day ещё даже не дошло.
По мотивам новая новость. Там будет весь срачик по этому поводу.
> Язык JavaScript в Polkit используется для определения правил доступа, которые взаимодействуют с привилегированным фоновым процессом polkitd при помощи объекта "polkit".Дискретного контроля прав доступа вполне хватает. Настройте DAC в дистрах и не изврасчайтесь с JavaScript.
Какой самый удобный формат для написания и просмотра правил контроля доступа?
https://www.linux.org.ru/forum/security/15600248?cid=15622030systemd, dbus, polkitd+JS не нужны совсем:
https://www.linux.org.ru/forum/security/15600248?cid=15620606
https://www.linux.org.ru/forum/security/15600248?cid=15600880
https://www.linux.org.ru/forum/security/15600248?cid=15600757
https://www.linux.org.ru/forum/security/15600248?cid=15600633
и сразу соседняя новость: «Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux». ой. как так-то?..