LINUX.ORG.RU

Fil-c: Rust killer

 , , ,


1

3

https://fil-c.org/

Видево: https://www.youtube.com/watch?v=6Maoe-GMynM

Ъ:

Fil-C — a memory safe implementation of the C and C++ programming languages you already know and love.

Key Features:

Memory Safety: Advanced runtime checks to prevent exploitable memory safety errors. Unlike other approaches to increasing the safety of C, Fil-C achieves complete memory safety with zero escape hatches.

C and C++ Compatibility: Your C or C++ software most likely compiles and runs in Fil-C with zero changes. Many open source programs, including CPython, OpenSSH, GNU Emacs, and Wayland work great in Fil-C. Even advanced features like threads, atomics, exceptions, signal handling, longjmp/setjmp, and shared memory (mmap style or Sys-V style) work. It’s possible to run a totally memory safe Linux userland, including GUI, with Fil-C.

Modern Tooling: Compiler is based on a recent version of clang (20.1.8), supports all clang extensions, most GCC extensions, and works with existing C/C++ build systems (make, autotools, cmake, meson, etc).

Принёс на ЛОР.

Нужна ли борьба с borrow checker? Или продолжаем страдать от ЦеПеПе?

Известны ли уже CVS с ошибками в unsafe блоках?

★★★★

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

ты теперь утверждаешь

То, что сишные ISO-стандарты (кроме C89) - плод графомании не особо компетентных личностей, и то что не следует их принимать за истину в последней инстанции, я утверждаю очень давно. C89 тут исключение: его не «сочиняли» комитетчики, это была по сути обзорная статья на тему текущего положения дел Си-компиляторов - она отражала уже имевшуюся реальность, а не чьи-то фантазии на будущее.

твоё толкование Си – единственно правильное

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

то чем руководствуются авторы компиляторов

Авторы компиляторов руководствуются полезностью новых фич, а не ISO-стандартами. Конкретно в случае с VLA, как я уже выше писал, они эту бесполезную ерунду вообще проигнорировали настолько, что комитетчикам пришлось, чтобы не совсем потерять лицо, объявить VLA опциональной штукой в следующем своём издании спустя 12 лет. Со временем в компиляторах эту штуку таки реализовали - ну, видимо нашлось у кого-то лишнее время, но отношение к содержанию стандарта тут очевидно.

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

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

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

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

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

То, что сишные ISO-стандарты (кроме C89) - плод графомании не особо компетентных личностей, и то что не следует их принимать за истину в последней инстанции, я утверждаю очень давно. C89 тут исключение: его не «сочиняли» комитетчики, это была по сути обзорная статья на тему текущего положения дел Си-компиляторов - она отражала уже имевшуюся реальность, а не чьи-то фантазии на будущее.

Если бы C89 отражал существовавшую реальность, в нём были бы всякие прикольные штуки типа near/far pointers, нормальные строки в стандартной библиотеке (серьёзно, их вот уже в 80х все подряд городили!) и прочее прочее. Так что я очень сожалею, но нет, C89 – тоже высер графоманов и наркоманов.

Авторы компиляторов руководствуются полезностью новых фич, а не ISO-стандартами.

Кто тебе это сказал? Они сами? Если ты придёшь в багзиллу GCC с жалобами на UB, тебя пошлют как раз ссылаясь на стандарт. С glibc аналогично. Вспомни хотя бы эпического Ульриха «STOP REOPENING!!!!!!» Дреппера, про любовь к memcpy/memmove которого даже Линус успел поныть.

Конкретно в случае с VLA, как я уже выше писал, они эту бесполезную ерунду вообще проигнорировали настолько, что комитетчикам пришлось, чтобы не совсем потерять лицо, объявить VLA опциональной штукой в следующем своём издании спустя 12 лет.

Это нормально, у них со всем так. Тем не менее, в GCC и Clang VLA поддерживаются. А MSVC просто на поддержку C клали, это в первую очередь компилятор C++.

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

Тащемта, вот тебе короткая статейка от Реймонда, где он вспоминает процесс стандартизации Сей.

http://www.catb.org/~esr/writings/taoup/html/c_evolution.html

Many people don’t realize how unusual the C standardization effort, especially the original ANSI C work, was in its insistence on standardizing only tested features. Most language standard committees spend much of their time inventing new features, often with little consideration of how they might be implemented. Indeed, the few ANSI C features that were invented from scratch — e.g., the notorious “trigraphs”—were the most disliked and least successful features of C89.

– Henry Spencer

Void pointers were invented as part of the standards effort, and have been a winner. But Henry’s point is still well taken.

– Steve Johnson

То есть, авторы ANSI C (позже C89) взяли наиболее общий компот из существовавших реализаций и слепили это в типа язык, наклеив сверху ещё пару фич типа void* для красоты. Кто и как именно будет на этом писать, никто вообще не задумывался. Возможно, именно поэтому на т.н. «стандартный Си» клали болт ещё лет 20 после этого, пока почти все несовместимые с GCC компиляторы не сдохли.

While the core of ANSI C was settled early, arguments over the contents of the standard libraries dragged on for years. The formal standard was not issued until the end of 1989, well after most compilers had implemented the 1985 recommendations. The standard was originally known as ANSI X3.159, but was redesignated ISO/IEC 9899:1990 when the International Standards Organization (ISO) took over sponsorship in 1990. The language variant it describes is generally known as C89 or C90.

Прикинь, да? Они в 1985 в принципе уже определились с фичами языка, а потом ещё пять лет срались по переписке о том, что же в libc засунуть. Ты правда считаешь этих людей адекватными? Потому что спустя 40 лет это выглядит ровно как тот же самый турбоаутизм, который мы сейчас во всём впопенсорце наблюдаем. Драмы вокруг Rust оттуда же растут.

anonymous
()