а где же истеричные вопли о переполнение буфера???? такие порты переводят редокс в сишную категорию осей.. в сугубо сишную
Helix, кстати, в основном на Ржавом написан. Cosmic по сути тоже, если имеется ввиду та версия, что отвязана от гномов, а не старая. Я уже писал, что нужно проверять информацию прежде, чем идти с ней ныть на форум. Вопрос в ядре, переписать вообще весь софт на невсратых языках не представляется возможным.
А че так? Это же быстро и безопасно, не надо как в сях обо всяких мелочах думать. Говоришь, вон, копилоту "напиши мне текстовый редактор типа ворда" и только успевай терабайты под рог изобилия подставлять...
Rel, открываем сорцы... Код (Text): let library = unsafe { Library::new(&library_path) } .with_context(|| format!("Error opening dynamic library {:?}", library_path))?; let language_fn_name = format!("tree_sitter_{}", name.replace('-', "_")); let language = unsafe { let language_fn: Symbol<unsafe extern "C" fn() -> Language> = library .get(language_fn_name.as_bytes()) .with_context(|| format!("Failed to load symbol {}", language_fn_name))?; language_fn() }; //https://github.com/helix-editor/helix/blob/master/helix-loader/src/grammar.rs скажу Тебе больше == на гламурных яп-ах а-ля ржака вообще почему-то ничего особенного написать невозможно можь всё дело в том, что с богомерзкой сихой упираешься в лимиты самой жестянки, а с той же ржакой бьёшься башкой о её парадигму и практически либо пишешь сишкой на препроцессоре ржаки / либо тупо вызываешь корневые сишные функи в ансейфах
И что? Если ты не в курсе, что такое tree_sitter и для чего он нужен Хеликсу, то я тут причем, и причем тут Ржавый? Никто никому не запрещает использовать сторонние библиотеки, не понимаю, почему очевидную вещь так сложно понять. Ты так говоришь, как будто на цэ чего-то особенного можешь написать. --- Сообщение объединено, 3 фев 2024 --- Вообще, надо завести тренд среди девелоперов, мол если хочешь быть особенным, то пиши на Цэ! Не на Цэ ничего особенного написать невозможно... --- Сообщение объединено, 3 фев 2024 ---
UbIvItS, ты же сам себе противоречишь. По твоей ссылке 600-строчный файл, в котором только три слова unsafe, и те именно в твоих девяти строчках. То есть, у нас 591 строчка безопасного pure-Rust кода, а 9 строчек - небезопасная FFI-обёртка для tree-sitter. Слабенький аргумент. Чтобы доказывать битьё башкой о парадигму, надо искать примеры, где на unsafe написано хотя бы процентов 30. Думаю, даже в змейке ансейфа меньше. А здесь ещё неясно, где грань этого "чего-то особенного". Вот, например, один из самых используемых растовских веб-серверов: https://github.com/tokio-rs/axum 31 миллион установок за всё время, семь с половиной - недавние. В принципе, можно считать этот проект значимым или хотя бы заметным. Смотрим на гитхаб: То есть, внутри нет unsafe-блоков. Вообще ни одного. Как же он его сумел написать, если, по твоим словам, ничего особенного на нём написать невозможно? Но Axum построен на библиотеке Hyper (125 миллионов загрузок за всё время и 15 миллионов недавно), которая уже не декларирует forbid(unsafe_code). Наверно там-то ансейфы кишмя кишат? Смотрим: https://github.com/search?q=repo:hyperium/hyper unsafe&type=code Вроде нет, 34 ансейфа на всю библиотеку. Так что нет, аргументы не аргументы, давай ищи что-то, где открываешь рандомный файл, и у тебя всё лицо в ансейфах.
Ещё один камень в огород питухония. Именно прототипирование по мне проще делать на JS, чем на этом мерзком питухонии. Ну переоценённый безполезный ЯП, от которого если бы не избавится, то требо снизить популярность. На JS код проще, и потом его легче переделать в С++ если требуется.
Ну нет, если лично тебе не нравится - это же не значит, что ЯП переоценён и бесполезен. JS - это язык конечной разработки. Писать на нём пользовательские скрипты (как на баше или на том же питоне) или юзать REPL в принципе можно, но просто неудобно. И всякие мелочи, которые могут быть существенными, типа отсутствия целых чисел без костылей. --- Сообщение объединено, 3 фев 2024 ---
интересно это аким дикобразом я умудрился сразу попасть на эти "редкие" строчки потом что Ты понимаешь под понятием "сейф код"??? тупо напихать чекеров в цикл совсем не делает код безопасным.. 1. увеличиваем угрозу обрушить стек. 2. делаем код более медленным. 3. увеличиваем расход батареи. ===== это так - навскидку. а можем ещё вспомнить арифметику циклов... loop { // 101% loop{ // (101%)2 == 102% .... } } ======== то бишь при росте лага в верхнем цикле всего лишь на процент у следующего вложенного цикла получаем 2%. арифметика простая:[math] \frac{\displaystyle 101^{2}}{\displaystyle 100}= 102.01%[/math] и замечу особо, это расчёт минимального роста ТОРМОЗУХИ потом все ржака бинари не компилятся без libc.. как бы на редоксе такой зависимости быть не должно, но порты сишного кода делают редокс сишным и всё больше сишного кода будет появляться именно на редоксе, пч он (сишный код) дешевле и надёжней
Да-да, клятый читер Хошемин, делая свою змейку, просто вкомпилил либцэ и никому не сказал. То-то я смотрю, адепты Ржавого все свои софты называют "blazingly fast", они то, наверное, не в курсе просто, что у них все вложенные циклы тормозят на 2 процента, надо тебе срочно пойти им всем об этом рассказать.
Вот тупые твитторные пориджи, вместо того, чтобы ловить сегфолты на своем кэш-сервере на Цэ, как настоящие спецы, они вструхнули и переписали все на Ржавом... Наверное, не слыхали, что все их циклы теперь на целых 2 процента медленнее будут. --- Сообщение объединено, 4 фев 2024 --- Ну что? Всё, конец всему? Добро пожаловать в ужасное будущее, где Цэ оказывается не нужон: https://github.com/microsoft/windows-drivers-rs - мелкомягкие пориджи сделали библиотеку для написания драйверов на Ржавом.
На самом деле, их две. Первый порт WDK лежит в windows-rs (официальный порт WinAPI) - там генерируют биндинги на основе метаданных: там в одном крейте сразу и юзермодные апи, и ядерные. В build.rs подлинковываем ntoskrnl.lib, меняем тип на драйвер - получается… драйвер. А второй - это вот эта либа от команды Surface, они её делали изначально для себя и планируют на ней писать драйвера для своего железа. И она генерирует биндинги на основе сишных хедеров, используя bindgen. Два мира - два плана. В случае метаданных можно удобно раскидать функции по модулям/неймспейсам и генерировать биндинги для любых языков, но нет версионирования (мы не можем сказать, мол, хотим ограничиться набором WDK10) - надо следить самому, чтобы не использовать функции, которых ещё нет на целевых системах. В случае bindgen’a наоборот: мы генерируем биндинги для конкретного WDK требуемой версии, но все функции свалены в кучу (получается огромный rs-файлик на 100к+ строчек). Как-то спрашивал у них про эти два подхода, можно глянуть здесь: https://github.com/microsoft/windows-drivers-rs/discussions/20 На самом деле, мне вариант с метаданными нравится больше, но на вкус и цвет все фломастеры разные. Ни тот, ни другой, несмотря на авторство команд из Microsoft, не являются "официальными" и единственно правильными WDK: использовать можно оба. --- Сообщение объединено, 4 фев 2024 --- Ну и ещё актуален вопрос с паниками при OOM: на это тоже есть дискуссия: https://github.com/microsoft/windows-drivers-rs/issues/6
Лол. Им скриптом на петоне нагенерили врапперов над сишным winapi, а они двигаются так, как будто у них уже полное ядро драйверов на расте
Наконец то раст идет к успеху. Пусты и полны заблуждений те языки программирования, которые не порождены опытом, отцом всякой достоверности. Теперь опустошительные срачи про говнораст прекратятся