The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Для Linux и Redox представлена реализация Libc на языке Rust

09.03.2018 09:46

Разработчики операционной системы Redox, развиваемой с использованием языка Rust и применяющий концепцию микроядра, представили проект по созданию собственной стандартной Си-библиотеки Relibc. Код проекта разрабатывается на языке Rust и распространяется под лицензией MIT. Relibc позиционируется как переносимая реализация стандартной библиотеки Си, соответствующая стандарту POSIX и способная работать не только в Redox, но и в дистрибутивах на базе ядра Linux.

Работа над проектом началась неделю назад и функциональность библиотеки пока сильно ограничена, но к разработке уже подключилось 5 участников и проект активно развивается. Ранее в Redox в качестве стандартной библиотеки применялся форк библиотеки newlib от проекта Сygwin, но он не устраивал разработчиков с точки зрения безопасности и кросс-платформенности.

Использование языка Rust позволяет избавиться от свойственных языку Си усложнений при организации работы с памятью и задействовать при разработке предоставляемые языком Rust средства по обеспечению безопасного программирования. Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.

  1. Главная ссылка к новости (https://www.redox-os.org/news/...)
  2. OpenNews: Релиз языка программирования Rust 1.20
  3. OpenNews: Третий выпуск операционной системы Redox OS, написанной на языке Rust
  4. OpenNews: Эксперимент по разработке частей ядра Linux на языке Rust
  5. OpenNews: Выпуск стандартной Си-библиотеки Musl 1.1.17 с устранением уязвимости
  6. OpenNews: Выпуск системной библиотеки Glibc 2.27
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48226-redox
Ключевые слова: redox, rust, relibc, libc, posix
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (100) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:51, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Давайте теперь посмотрим на тесты скорости по сравнению с обычной библиотекой :)
     
     
  • 2.3, A.Stahl (ok), 10:19, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +18 +/
    Зачем? Оно не ради скорости делалось. А ради... блин, я х.з. ради чего, но точно не ради какого-либо практического применения.
     
     
  • 3.5, Аноним (-), 10:31, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Для того чтобы показать, что уменьшение скорости выполнения на 10% даже если код абсолютно безопасен, на фиг никому не нужно из компаний, потому что любое уменьшение производительности там, где до этого использовался C - это миллионы американских долларов.
     
     
  • 4.8, Bvz (?), 10:39, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А скорость всегда будет падать?
    А если отключить всякие проверки на выход за границы, то оно станет такое же быстрое? (ну небезопасное)
     
     
  • 5.10, Аноним (-), 10:44, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А скорость всегда будет падать?
    > А если отключить всякие проверки на выход за границы, то оно станет
    > такое же быстрое? (ну небезопасное)

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

     
     
  • 6.14, Аноним (-), 11:02, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В Rust все проверки при компиляции проходят.
     
     
  • 7.15, A.Stahl (ok), 11:08, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Тогда насколько они эффективны? Что-то мне подсказывает, что 99% выходов за пределы массива проходит в циклах и т.п. И что тут можно анализировать на этапе компиляции?
     
     
  • 8.41, Аноним (-), 16:28, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Спасибо за Мудрость и приоткрытие Изначальных Законов Вселенной Хотелось бы зна... текст свёрнут, показать
     
  • 8.68, 0xd34df00d (??), 05:12, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Доказать, что индекс всегда внутри правильного диапазона, например Про rust не ... текст свёрнут, показать
     
     
  • 9.71, A.Stahl (ok), 10:02, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Это практически всегда невозможно А в тех тривиальных случаях когда такая возмо... текст свёрнут, показать
     
  • 7.16, Аноним (-), 11:20, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >В Rust все проверки при компиляции проходят.

    ну это как вставить cppcheck какой-нибудь в препроцессор  :)

     
     
  • 8.20, Аноним (-), 12:07, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Замечательно Теперь продолжите логическую цепочку Почему cppcheck какой-нибу... текст свёрнут, показать
     
     
  • 9.21, Аноним (-), 12:12, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как это не эффективен Просто язык не лоялен к тем кто делает все наполовину Сд... текст свёрнут, показать
     
     
  • 10.31, Аноним (-), 14:48, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На раз поймается и valgrind и asan ... текст свёрнут, показать
     
  • 9.27, Crazy Alex (ok), 13:31, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Он точнее, более живые анализаторы очень даже эффективен для отлова отхода от ... текст свёрнут, показать
     
     
  • 10.75, Nexmean (?), 14:54, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Лайфтаймы, владение и заимствование ... текст свёрнут, показать
     
     
  • 11.87, Vkni (ok), 02:26, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    unique_ptr или auto_ptr RAII Но там есть множество других идей, пришедших из ... текст свёрнут, показать
     
     
  • 12.88, 0xd34df00d (??), 02:40, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Только если вы при этом ещё запретите get и ссылки на unique_ptr, что вряд ли ре... текст свёрнут, показать
     
     
  • 13.89, Vkni (ok), 06:16, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    О Спасибо, чё-то не задумывался об этом И тут, значит, уши ML-ей конкретно - ... текст свёрнут, показать
     
  • 7.66, Alex (??), 04:13, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Выход за границы массива бросает исключение в расте. Проверка в рантайм.
     
     
  • 8.74, Ordu (ok), 12:51, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Бросает, да Да ладно Почему же в рантайме, если её можно выполнить статически ... текст свёрнут, показать
     
  • 7.79, pavlinux (ok), 19:21, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > В Rust все проверки при компиляции проходят.

    Он читает мысли?

     
  • 7.94, bOOster (ok), 17:44, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну точно, так же как и в JAVA.
     
  • 3.113, dq0s4y71 (ok), 14:52, 13/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сколько ни изобретай свой собственный велосипед с треугольными колёсами, всё равно придётся осилить грёбаные указатели. Мир несправедлив.
     
  • 2.4, Sunderland93 (ok), 10:29, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Давайте. Но только когда проект дорастёт до первого стабильного релиза.
     
     
  • 3.98, Аноним (-), 12:16, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это когда версия будет 248.0.3?
     
     
  • 4.100, Iaaa (ok), 13:05, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Через еще одну неделю.
     
  • 2.9, Аноним (-), 10:39, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Скорее всего всё ок, т.к. в rust управление памятью не создаёт оверхеда (все проверки статические, во время компиляции).
     
     
  • 3.23, Аноним (-), 12:38, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Даже для динамических массивов? :) Ну, ребята, ну что же это такое. Почему не разбирающиеся в чем либо лезут комментировать?
     
     
  • 4.32, VladSh (?), 14:54, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То есть проверок для динамических массивов в рантайме лучше не делать?
     
     
  • 5.33, Аноним (-), 15:07, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мы же про статический анализатор динамических массивов разве нет? :)
     
  • 4.35, pda (?), 15:08, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Иногда и для них. Rust предоставляет достаточно информации llvm, чтобы тот мог удалять проверку диапазона в некоторых случаях. Например (насколько я помню), когда вы делаете цикл по неизменяемому объекту (например неизменяемой ссылке) и только что получили длину массива, llvm может понять, что вы никогда не выйдите за границу диапазона и удалить проверку.
     
     
  • 5.53, angra (ok), 21:12, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А если я в цикле присвою счетчику другое значение? А если обращусь к a[i+1] на последней итерации?
     
     
  • 6.60, Аноним (-), 22:31, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Дада, это всё очень просто отлавливается компилятором.
     
     
  • 7.63, angra (ok), 00:53, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Разве что в самых простейших случаях, типа тела цикла из одного выражения. При наличии других переменных, ветвлений и вызовов функций всё становится совсем не простым для компилятора.
     
  • 6.65, Ordu (ok), 01:58, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    for mut i in 0 10 println , i i 1 резуль... большой текст свёрнут, показать
     
     
  • 7.67, angra (ok), 04:43, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ох уж эти титеретики
    fn main() {
        let a: [i32;5]=[1,2,3,4,5];
        for i in 0..a.len() {
            if i == a.len() - 1 {
                println!("{}", a[i+1]);
            }
        }
    }

    Compiling playground v0.0.1 (file:///playground)
        Finished release [optimized] target(s) in 0.59 secs
         Running 'target/release/playground'
    thread 'main' panicked at 'index out of bounds: the len is 5 but the index is 5', /checkout/src/libcore/slice/mod.rs:830:10
    note: Run with 'RUST_BACKTRACE=1' for a backtrace.

     
     
  • 8.72, Ordu (ok), 12:09, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И Вы хотите сказать, что проверка осталась и выполнялась на каждой итерации цик... текст свёрнут, показать
     
     
  • 9.73, Ordu (ok), 12:23, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    type _ZN3tmp4main17hd307395e913df02cE, function _ZN3tmp4main17hd307395e913df02... текст свёрнут, показать
     
     
  • 10.80, Vkni (ok), 21:38, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С одной стороны это круто, с другой - компилятор явно недоделан, а с третьей, по... текст свёрнут, показать
     
     
  • 11.85, Ordu (ok), 23:00, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сегодня это уже не круто, это нормальное поведение для любого уважающего себя ко... большой текст свёрнут, показать
     
     
  • 12.86, Vkni (ok), 02:24, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ох После большого количества inline ов и всяких мудрых мыслей может получиться,... текст свёрнут, показать
     
     
  • 13.91, Ordu (ok), 10:25, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Такие вещи будет сложно отловить анализируя чисто машинный код, всё равно придёт... текст свёрнут, показать
     
  • 10.82, Аноним (-), 22:21, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    О да Вот что они взяли из плюсов - так это вот это А в сях таки в этих случаях... текст свёрнут, показать
     
     
  • 11.101, Iaaa (ok), 13:13, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что, так сложно накидать скрипт, который будет парсить такой вывод и деманглить ... текст свёрнут, показать
     
     
  • 12.107, Аноним84701 (ok), 15:29, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    c filt вполне себе справляется Код из 73 CODE cat tmp tst type ... большой текст свёрнут, показать
     
     
  • 13.108, Iaaa (ok), 16:37, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не пользуюсь, но все равно - большое спасибо Когда-нибудь точно пригодится ... текст свёрнут, показать
     
  • 9.77, angra (ok), 18:10, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я хочу сказать ровно одно, сказанное титеретиком не выдержало проверки практикой... текст свёрнут, показать
     
     
  • 10.78, Ordu (ok), 18:32, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А, ну да, я там ошибся -- я всё ж не компилятор Но давай вернёмся тогда чуть на... большой текст свёрнут, показать
     
  • 3.48, Аноним (-), 18:16, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Скорее всего всё ок, т.к. в rust управление памятью не создаёт оверхеда
    > (все проверки статические, во время компиляции).

    И как статически проверить конкатенацию 2 строк вводимых юзером, например?

     

  • 1.6, фывфыв (?), 10:32, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Код проекта написан на языке Rust

    Бла-бла-бла, математика использует openlibm, а оно на C.
    Алокаторы памяти и прочие низкоуровневые вещи регулярно пестрят unsafe блоками, что автоматически нивелирует все "плюшки" Rust'а.

     
     
  • 2.7, Аноним (-), 10:36, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть примеры?
     
     
  • 3.11, Аноним (-), 10:51, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Модуль реализации строк посмотри.
     
  • 3.12, Аноним (-), 10:51, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Есть примеры?

    https://github.com/redox-os/relibc/search?utf8=%E2%9C%93&q=unsa

     
  • 3.18, lfx (ok), 11:33, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Лучше молчи... Когда я сказал что без unsafe на rust далеко не уедешь, любители смузи меня тапками забросали. Им что то объяснять себе дороже.
     
     
  • 4.34, Аноним (-), 15:08, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > тапками

    кедами

     
     
  • 5.70, Аноним (-), 09:36, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вот и выросло поколение школьников, которое думает, что кеды придумали хипстеры...
     
  • 2.13, Аноним (-), 10:53, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Вообще касательно самого языка.
    Идея хорошая, только зря они его назвали "rust".

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

    В итоге все заглохнет. И проекты на нем тоже. Будет еще хуже, чем с D.
    А жаль, был бы неплохой язык, если бы не название.

    Это еще как с OS Fiasco.
    Ой, оказывается это такая итальянская бутылка!
    А в итоге кто ее использует?

     
     
  • 3.22, кверти (ok), 12:25, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >OS Fiasco

    Это когда FreeBSD переименовать успели?

     
     
  • 4.25, Аноним (-), 12:50, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    У вас фиаско с FreeBSD?


     
  • 3.24, Аноним (-), 12:46, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Надо ([кому?]) переписать игру Rust на язык Rust.
     
  • 2.37, pda (?), 15:20, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И что Похоже вы как и многие не правильно понимают назначение unsafe так же ка... большой текст свёрнут, показать
     
     
  • 3.54, sadasd (?), 21:24, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    О чем и речь, что в коде там дофига unsafe и смысла писать на Rust нет.

    А вообще, еще до Rust'а были "безопасные" варианты C, Cyclon например.
    Да и вообще, к тому-же GCC / Clang приписать пару пачку проверок и поставить их в -Werror.

     
     
  • 4.62, Тот же Аноним (?), 00:31, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А -fpermissive можно? А то на с++ такое бывает...

    блаблабла предупреждение: декларация ничего не описывает [-fpermissive]
    #   define off_t long
    Да можно typedef-ом, но за что препроцессор?

     
  • 4.81, Vkni (ok), 21:48, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > О чем и речь, что в коде там дофига unsafe и смысла
    > писать на Rust нет.

    Смысла есть - во-первых, внутре unsafe тоже rust, а не C. Во-вторых, ошибки бывают разные, причём большая часть ни к каким segfault'ам не приводит. В Питоне, например, довольно тяжело сделать выход за границы выделенной интерпретатору памяти, однако написать программу в 1000 строк без дюжины ошибок совершенно невозможно.

    Rust'овские владения, частичный вывод типов, неизменяемые объекты по-умолчанию и т.д. отсекают ряд ошибок, в том числе и такие, что ни к каким падения не приводят, а ведут к неправильным результатам.

     
  • 3.55, _ (??), 21:46, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >Unsafe не что-то плохое в rust, в вполне сознательно сделанная вещь. Она позволяет создавать

    ... хоть как то работающие программы :) Не надо песен, у нас их тоже есть!

    >С другой стороны, безопасный интерфейс к такому списку избавит вас от необходимости покрывать такими же тестами остальную прогрумму. Там этим займётся компилятор.

    Наивняк! :) Это уже было. Да - Java promise :) Чем всё кончилось? Покрывают тестами __всё__! И это правильно, ибо нефиг. И у вас тоже самое будет, всё суета сует :-)

    >Хорошим примером такого подхода является языки C/C++, где программисты регулярно лажают от лени или усталости забывая вставлять проверку

    Оу-е бэйби! А ржавчики будут кодячить без усталости и лени! :-))))) Гив ми море! :)

    Может оно и взлетит, но взлетит вопреки. Ибо нафиг оно - до сих пор не очевидно.

     
     
  • 4.64, pda (?), 01:07, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вы так ничего и не поняли.

    > Это уже было. Да - Java promise :)

    Бессмысленное сравнение. В Java (визитной карточкой которого является NullPointerException) такае навеска - как фаервол с политикой "пропускать" и попытка сделать надёжным, путём кучи запрещающих правил. Unsafe это необходимая дырка в запрещающем фаерволе. Rust потому и бесит многих, что похож на фаервол с политикой "запрещать".

    > Покрывают тестами __всё__!

    Я не знаю как там в Java, не видел много Java, но судя по регулярным статьям о PVSStudio - нет, не покрывают. Хуже того, некоторые сознательно даже кое-каких проверок не вставляют, рассчитывая, что пусть оно лучше упадёт. Забывая, что в C/C++ это UB.

    > А ржавчики будут кодячить без усталости и лени! :-)))))

    Как я говорил - вы ни фига не поняли. "Ржавчики" такие же люди, по этому язык исключает ситуации, когда эта возня понадобится. Внутри безопасного кода не может возникнуть null или висячий указатель.

     
     
  • 5.99, iZEN (ok), 12:35, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Внутри безопасного кода не может возникнуть null или висячий указатель.

    Все объекты, используемые хоть раз в программе, что, сразу нужно инициализировать (создавать) и до отказа по ошибке OutOfMemoryError? В надёжной безопасной программе разве запрещено динамическое/"ленивое" создание объектов, когда ссылка на объект есть, но самого объекта нет - он будет создан и инициализирован в момент обращения к нему? Тогда готовьте разориться на оперативную память для инициализации всего и вся в момент старта программы.

     
     
  • 6.102, Iaaa (ok), 13:26, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да забей ты. Поносятся годик второй с этой модной молодежной поделкой. Накопится достаточное количество реальных проектов, и все вернется на круги своя.

    К сожалению, ничего принципиально нового с момента изобретения первых языков так и не появилось, все эти "языки" похожи на дистрибутивы - разные коктейли Лиспа и Фортрана с втаскиванием внешних инструментов внутрь "языка", с немножко разной степенью удобности использования.

    Смешно, когда начинаются баталии тупоконечников против остроконечников, по сути пережевывающие одно и то же яйцо.

     
  • 6.104, Nexmean (?), 14:03, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > ссылка на объект уже есть а объекта еще нет

    Вы сами то поняли, что сказали? Типа указатель у нас уже есть на память, но там ещё ничего нету, а появится магическим образом как только мы туда обратимся? Или это какой-то умный указатель? Так таких указателей можно и в русте наклепать. Или хотите чтобы у вас такие вещи автоматом работали? Ну тут в примитивных ситуация и джавка справится и gcc и rust, а в сложных только всякие Haskell и тому подобные.

     
     
  • 7.106, Andrey Mitrofanov (?), 14:22, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> ссылка на объект уже есть а объекта еще нет
    > Вы сами то поняли, что сказали?

    https://en.wikipedia.org/wiki/Lazy_evaluation

    Это ничего, что Вы чего-то не знаете.

    Плохо, что Вы делаете из этого неправильные выводы.

    [I]Скушайте немного этих мягких https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/haskell-be французских микрософт-рисиорчей, да выпейте жж водички.[/I]

     
  • 6.105, Nexmean (?), 14:07, 12/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну а ещё есть Option<T>, который от null отличается тем, что если в нем лежит НИЧЕГО, то и попробовать обратиться к T не получится.

     

  • 1.26, Crazy Alex (ok), 13:29, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    "Работа над проектом началась неделю назад и функциональность библиотеки пока сильно ограничена" - ну и смысл в таких новостях? Когда что-то хотя бы слегка живое будет - тогда и поговорим. И даже после этого - в реальном применении возникнет миллион нюансов, частных случаев и прочего, и только после возни с ними станет понятно, жизнеспособна идея или нет.
     
     
  • 2.28, Аноним (-), 14:23, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Работа над проектом началась неделю назад

    Вопрос, дотянет ли оно хотя бы до четвёртой недели.

     
  • 2.29, RobotsCantPoop (?), 14:41, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Первый релиз нового быстрого офиса, без глюков работающего с doc и docx:

    int main()
    {
        return 0;
    }

    Посоны, заходите коммитить, я создал!

     
     
  • 3.30, Anonymous Coward (?), 14:47, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    exit(EXIT_SUCCESS);
     
     
  • 4.36, A.Stahl (ok), 15:13, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Вот! Уже можно ещё одну новость писать про значительные улучшения, про сообщество с патчами и даже честно можно приложить ченджлог!
     
  • 2.69, freehck (ok), 09:09, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Смысл новости в подтексте видимо, который такой: некоторые люди считают, что rust уже достаточно зрел для того, чтобы переписать на нём libc.
     

  • 1.38, Аноним (-), 15:30, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пиарят Rust как могут. Только лучше бы толковых библиотке понаписали и примеров понаделали, а то быстрое знакомство с языком пока только рвотный рефлекс производит. А это сразу отворачивает всех.
     
     
  • 2.42, Аноним (-), 16:58, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С нетерпением жду когда питонисты подхватят знамя и напишут стандартную либу для сишников.
     
     
  • 3.45, Аноним84701 (ok), 17:32, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > С нетерпением жду когда питонисты подхватят знамя и напишут стандартную либу для сишников.

    Там "знамя", AFAIK, немного не о том.
    Поэтому питонистам придется сначала написать свою ОСь на питоне и Pylibc под нее, а потому уже думать о портировании на прочие ОСи.

    А вообще,  некоторым опеннетчикам не угодишь:
    Использовали cишный  – "Фи! Не осилили даже стандартный ОСевой рантайм на своей ржавчине для своей игрушки написать!"
    Начали писать на ржавчине – и опять все не так, "Бласфемия! Да как они смеют!".

    Как будто следующим шагом будет принудительная установка и использование под страхом отлучения от интернета.

     
     
  • 4.46, Аноним (-), 17:54, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Поэтому питонистам придется сначала написать свою ОСь на питоне и Pylibc под
    > нее, а потому уже думать о портировании на прочие ОСи.

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

    > Использовали cишный  – "Фи! Не осилили даже стандартный ОСевой рантайм на
    > своей ржавчине для своей игрушки написать!"

    Ну, хорошо, уговорил. В ненужно-ос появилась ненужно-либ. А чтобы это за игрушку не считали - наверное, авторам и фанатам неплохо бы своей операционкой пользоваться. Хотя-бы для себя. Для своих повседневных задач. Ну или нафиг еще операционка может быть нужна?

     
     
  • 5.49, Аноним84701 (ok), 18:46, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ну или нафиг еще операционка может быть нужна?

    Ну а нафиг на опеннте еще одно (не)нужное мнение о (не)нужности (не)нужного!?
    "Just For Fun!"(c)

     

  • 1.39, Ivan_83 (ok), 15:47, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Очередной пеар от раст боев.
    У раста ещё меньше каких то полезных работающих проектов чем у го.

    Кроме пеара в общем то у обоих новых языков ничего и нет, на фоне мира си и крестов.

     
     
  • 2.110, Аноним (-), 14:38, 13/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >раст боев

    Что, так и хочется сказать прямо, да? ;)

     

  • 1.43, анонимус (??), 17:05, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Зачем тащить этот образчик, как не надо делать в новую ось?
     
     
  • 2.52, Вареник (?), 20:45, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Избыток свободного времени и неумение найти ему лучшее применение.

    Давайте перепишем окаменелости мамонта 100500 раз, но на этот раз с хрустом, а не на JS.

     

  • 1.44, Аноним (-), 17:32, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > избавиться от свойственных языку Си усложнений при организации работы с памятью

    и приобрести 5 новых типов указателей.

     
  • 1.50, Ordu (ok), 19:57, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями

    Особенно при написании функции strlen, например. Или при реализации printf.
    Кстати, любопытно как они собираются разруливать varargs, если rustc вечно настаивает на том, чтобы сохранять за собой возможность точно рассчитать на этапе компиляции размер стека, который требуется для программы.

     
  • 1.51, Вареник (?), 20:43, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Про безопасность ранней Жавы говорил что-то схожее "безопасности" нынешнего сырого хруста в руках малолетних фанатиков :)
     
     
  • 2.57, _ (??), 21:50, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот! Просто таких старых как мы с тобой уже почти не осталось, другие забыли, а новые - и не знали никогда! :-)
     

  • 1.56, Нет ты (?), 21:47, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Безопасненько

    #[no_mangle]
    pub unsafe extern "C" fn strncat(s1: *mut c_char, s2: *const c_char, n: usize) -> *mut c_char {
        let mut idx = strlen(s1 as *const _) as isize;
        for i in 0..n as isize {
            if *s2.offset(i) == 0 {
                break;
            }

            *s1.offset(idx) = *s2.offset(i);
            idx += 1;
        }
        *s1.offset(idx) = 0;

        s1
    }

     
  • 1.59, Аноним (-), 22:28, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так и запишем: go для безделушек типа сервисов, rust для системных безделушек. Хотя, если не загнутся, и те и те могут оказаться полезными.
     
     
  • 2.84, Аноним (-), 22:32, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так и запишем: go для безделушек типа сервисов, rust для системных безделушек.
    > Хотя, если не загнутся, и те и те могут оказаться полезными.

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

     

  • 1.90, Аноним (-), 09:59, 11/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Заметьте, снова под нормальной свободной лицензией (MIT), а не вирусным несвободным недоразумением от ГНУ.

    Скоро отовсюду его выкинут, уже к либку подбираются. МОЛОДЦЫ!!!

     
     
  • 2.92, Nexmean (?), 11:37, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Кстати да, MIT лицензия может стать очень серьёзным конкурентным преимуществом данной реализации. Ибо, насколько я знаю, все реализации libc, которые хоть сколько нибудь живы нынче под прости господи копилефт лицензиями.
     
     
  • 3.109, Аноним (-), 14:34, 13/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не ново. Musl несколько лет уже есть, он под MIT.
     

  • 1.111, Аноним (-), 14:46, 13/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем бы дитя не тешилось...
     
  • 1.112, dq0s4y71 (ok), 14:47, 13/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.

    Интересно, а malloc (и вообще работу с динамической памятью) они в этой библиотеке каким образом реализовали?

    Похоже, ребята придумали такую "безопасную версию" пилорамы - с циркулярной пилой без зубьев. А когда на ней нужно что-нибудь распилить, пилу нужно временно поменять на нормальную, с зубьями. Зато она теперь Безопасная, чо.

     
     
  • 2.114, Аноним (-), 15:33, 13/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https github com redox-os relibc blob 1b1ff5c750cac0db2324df7a9d51fbd1e445a70e... большой текст свёрнут, показать
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру