LINUX.ORG.RU

Продемонстрирована возможность разработки частей Linux на Rust

 , ,


4

9

Французский программист написал статью, в которой рассмотрел возможность переписывания ядра Linux на Rust.

В статье отмечено, что данный язык хорошо подходит для системного программирования, будучи достаточно низкоуровневым и при этом лишённым многих недостатков C, и уже используется для написания новых ОС. Однако автор не считает создание ОС с нуля перспективным для серьёзного применения, и последовательный перенос отдельных частей Linux на Rust для решения различных проблем безопасности кажется ему более целесообразным.

В качестве «Proof of Concept» была приведена реализация системного вызова, содержащая вставки на Assembler внутри unsafe-блоков. Код компилируется в объектный файл, не связанный с библиотеками и интегрируемый в ядро во время сборки. Работа производилась на основе исходного кода Linux 4.8.17.

>>> Статья



Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 5)
Ответ на: комментарий от dzidzitop

Паскаль значительно проще.

Кому как. По мне так С на порядок проще Паскаля.

Который даже не определяет знаковый тип char или нет. Охренеть низкоуровневый.

Вам просто никто не объяснил, что char это _код_ некого символа и в коде нет смысла говорить о знаковости или без-знаковости. Это просто код и именно так должен интерпретироваться.

Если Вы поменяете таблицу кодировок, то тот же самый код будет представлять другой символ. Напомню char(acter) - это дословно символ и ничего более. В нем нет числа, а есть набор цифр=код.

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

Это язык со всеми минусами высокоуровневых языков (нет контроля над железом - даже int8_t не означает «в типе 8 двоичных разрядов»)

int8_t это однозначно signed char, а char это всегда 8 байт! Так что сэр, Вы гоните!

и минусами низкоуровневых языков (байтолюбовь в каждой строчке кода).

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

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

char это всегда 8 байтбит!

Да ты спец. Размер char зависит от реализации.

2.2.4.2 Numerical limits

The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.

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

int8_t это однозначно signed char, а char это всегда 8 байт! Так что сэр, Вы гоните!

1) не 8 бит (и уж тем более не 8 байт) int8_t uint8_t Integer type with a width of exactly 8 bits. For signed types, negative values are represented using 2's complement. No padding bits. Optional: These typedefs are not defined if no types with such characteristics exist.*

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

«Но старушки кушают» - этого не отнять. И программки байтики щёлкают, почти всегда успешно.

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

А почему не 8 бит? А потому что не гарантируется, что он вообще определён. Т.е. портабельный код с рассчётом на то, что есть тип, в котором строго 8

разумеется бит, а не байт.

факт! состоит в том, что int8_t определен как

typedef signed char  int8_t;

Не больше и не меньше!!! И поскольку согласно стандарта char это всегда 1 байт, то тоже самое можно сказать и о int8_t

И если у Вас по странному стечению обстоятельств не оказалось stdint.h, что само по себе маловероятно, то вы всегда можете определить это самой той самой строкой выше!!!

А тот бред, который Вы приплели из-за такой ерунды оставьте себе!

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

int8_t это однозначно signed char, а char это всегда 8 байт! Так что сэр, Вы гоните!

Большие же у тебя char'ы. Компенсация, видимо.

По стандарту c99 и по стандарту c11 char — это один байт. Байт *минимум* 8 бит. И для него в стандарте указан минимально необходимый диапазон значений (-256..255). При этом char вполне бывает 32 бита на dsp.

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