The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Командную оболочку Fish планируют переписать на языке Rust, opennews (?), 21-Фев-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


82. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (82), 21-Фев-23, 14:54 
> Cygwin is mostly a major PITA because of its wchar_t type. If we can get away from using libc that could make some things easier.
> ...
> Rust uses libc under the hood.

Почему Rust требует libc?

Ответить | Правка | Наверх | Cообщить модератору

98. "Командную оболочку Fish планируют переписать на языке Rust"  +3 +/
Сообщение от Аноним (90), 21-Фев-23, 15:21 
Я думаю наверно потому, что это единственный способ коммуникации с операционкой, написанной на C.
Т.е. без libc можно будет жить там, где сама ОС написана на расте и все сисколы - растовые, т.е. не POSIX-совместимая ОС. Но есть нюанс - не будет работать вообще никакой софт на С и С++.


Ну или растаманы должны выучить ассемблер (что врядли, они даже не могут память нормально очищать, целый язык для этого придумали чтоб вместо них это делал) и дергать syscall'ы из ассемблера:
mov %eax, <число>
mov %ebx, <число>
int 0x80

Ответить | Правка | Наверх | Cообщить модератору

103. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (34), 21-Фев-23, 15:29 
Лучше бы тогда сразу писали на Go. Там можно ключами настроить так что все соберется статически и не будет ни от чего зависеть. Всё своё будет хотя бы с собой.    
Ответить | Правка | Наверх | Cообщить модератору

108. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 21-Фев-23, 15:35 
Эка невидаль :)

gcc -static -nostdlib и всё

Ответить | Правка | Наверх | Cообщить модератору

126. "Командную оболочку Fish планируют переписать на языке Rust"  +1 +/
Сообщение от Аноним (34), 21-Фев-23, 15:54 
Почему раст тащит динамически?
Ответить | Правка | Наверх | Cообщить модератору

148. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 21-Фев-23, 16:20 
Пардон, это надо у них спросить
Ответить | Правка | Наверх | Cообщить модератору

106. "Командную оболочку Fish планируют переписать на языке Rust"  –1 +/
Сообщение от Советский инженер (?), 21-Фев-23, 15:34 
> Но есть нюанс - не будет работать вообще никакой софт на С и С++.

точно так же пишется libc, которая "пробрасьівает" растовьіе сискольі.

Ответить | Правка | К родителю #98 | Наверх | Cообщить модератору

110. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 21-Фев-23, 15:36 
ну естественно, я имел ввиду просто по-дефолту работать не будет, ясень пень с прослойками будет :)
Ответить | Правка | Наверх | Cообщить модератору

112. "Командную оболочку Fish планируют переписать на языке Rust"  –2 +/
Сообщение от Советский инженер (?), 21-Фев-23, 15:39 
>Ну или растаманы должны выучить ассемблер (что врядли, они даже не могут память нормально очищать, целый язык для этого придумали чтоб вместо них это делал) и дергать syscall'ы из ассемблера ...

https://github.com/skerkour/black-hat-rust/blob/main/ch_08/s...

утрись, кулхацкер мамкин.

Ответить | Правка | К родителю #98 | Наверх | Cообщить модератору

116. "Командную оболочку Fish планируют переписать на языке Rust"  +1 +/
Сообщение от Аноним (90), 21-Фев-23, 15:42 
1. во-первых видно что авторы кода немного знают ассемблер. А вот ты нет, так что не хвастайся тут чужими достижениями.
2. Почему они изобрели свой корявый ни с чем не совместимый ассемблер, а не заюзали nasm,yasm или ваще с AT&T синтаксисом? Это ж говно ни с чем не совместимо.
Ответить | Правка | Наверх | Cообщить модератору

121. "Командную оболочку Fish планируют переписать на языке Rust"  +1 +/
Сообщение от Советский инженер (?), 21-Фев-23, 15:48 
> во-первых видно что авторы кода немного знают ассемблер. А вот ты нет,

во-первьіх речь шла о растоманах вообще а не про меня лично, так что мимо.

> А вот ты нет, так что не хвастайся тут чужими достижениями.

git к осмотру, балабольчик. или завали єб..о про достижения.

> Почему они изобрели свой корявый ни с чем не совместимый ассемблер

какой надо такой и изобрели. сделали так как им удобно.

Ответить | Правка | Наверх | Cообщить модератору

129. "Командную оболочку Fish планируют переписать на языке Rust"  –1 +/
Сообщение от Аноним (90), 21-Фев-23, 15:58 
> git к осмотру, балабольчик.

у тебя все равно корпоративного VPN до intel.com нету, чтоб посмотреть, даже если я тебе линк дам.

> или завали єб..о про достижения.

этот советский растаман порвался, несите следующего

> какой надо такой и изобрели. сделали так как им удобно.

ну понятно, растаманы одним словом.

Ответить | Правка | Наверх | Cообщить модератору

284. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (263), 22-Фев-23, 13:49 
>у тебя все равно корпоративного VPN до intel.com нету, чтоб посмотреть

Когда на опеннет просят показать код, принято говорить что весь код под NDA.
С учетом того что на работу без тестового задания на github почти никогда, почти никуда не берут, это выглядит очень... показательно.

Ответить | Правка | Наверх | Cообщить модератору

138. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (62), 21-Фев-23, 16:12 
Лучше вызовом процедуры по определёному адресу. Так кроссархитектурнее, не считая специфики регистров, конечно.
Ответить | Правка | К родителю #98 | Наверх | Cообщить модератору

187. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (187), 21-Фев-23, 18:38 
Может ещё адреса сегментных регистров задавать вручную? Как на старых добрых 8086 компах.
Ответить | Правка | Наверх | Cообщить модератору

154. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от kusb (?), 21-Фев-23, 16:23 
Интересно, а как это сделано в Redox.
Ответить | Правка | К родителю #98 | Наверх | Cообщить модератору

285. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (263), 22-Фев-23, 13:58 
https://doc.redox-os.org/std/src/syscall/x86_64.rs

В точности же как и в linux и в netbsd

Ответить | Правка | Наверх | Cообщить модератору

283. "Командную оболочку Fish планируют переписать на языке Rust"  –1 +/
Сообщение от Аноним (263), 22-Фев-23, 13:45 
Но это же какая-то ерунда. Язык Си и его стандартная библиотека не через магию делает системные вызовы, а через вызов программного прерывания на x86 и arm архитектуре, инструкцию syscall x86-64 или подобный метод.
Этот механизм не является частью Си, С++, Rust и не зависит от того на чем написана операционная система.

Я только для dos программировала, но помню что там вызов функции операционной системы был через прерывание 21H

Ответить | Правка | К родителю #98 | Наверх | Cообщить модератору

294. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 14:45 
Я так и написал вначале - int 0x80
Это и есть сгенерировать программное прерывание, к-е отловит ядро и выполнит сисколл. Перед эти конечно надо положить правильные значения в правильные регистры.
Ответить | Правка | Наверх | Cообщить модератору

295. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 14:49 
дополнение:
вот только пользовательские программы прерывания напрямую не вызывают, для этого они и юзают libc. Хочешь напечатать что-то в stdout - вызываешь printf(). И всё. И что там внутри printf'а пользовательская программа не знает. А вот внутри там syscall write() с номером 0x4.
Ответить | Правка | Наверх | Cообщить модератору

296. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (263), 22-Фев-23, 16:15 
>Т.е. без libc можно будет жить там, где сама ОС написана на расте и все сисколы - растовые, т.е. не POSIX-совместимая ОС. Но есть нюанс - не будет работать вообще никакой софт на С и С++.

что-то не похоже, на тоже самое

Ответить | Правка | К родителю #294 | Наверх | Cообщить модератору

298. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 16:23 
Покажи мне, пожалуйста, типичную программу, к-я открывает файлы или пишет что-то на консоль через прямой вызов syscall'ов вместо дерганья библиотечных функций.
Ответить | Правка | Наверх | Cообщить модератору

301. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (263), 22-Фев-23, 16:33 
Начался речь с того что раст-программисты, в отличии от имеющих доступ к vpn интел персонажей не умеют ассемблер. И про rust системные вызовы которые не работают с С и С++ программами.
Ответить | Правка | Наверх | Cообщить модератору

302. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 16:36 
простите? Какой впн и интел, я наверно другой аноним
Ответить | Правка | Наверх | Cообщить модератору

303. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 16:37 
ну а раст программисты и правда не умеет в ассемблер, они даже ручного руления памятью бояться... какой там ассемблер. Умели бы - давно бы уже написали свой кодогенератор, а не юзали LLVM
Ответить | Правка | Наверх | Cообщить модератору

329. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (263), 23-Фев-23, 12:19 
Покажи свой git, клоун
Ответить | Правка | Наверх | Cообщить модератору

304. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 16:42 
Я тот аноним. Речь была не про то, что раст не умеет в сисколы (умеет конечно), а то, что раст не умеет в printf(), fopen(), fclose(), fwrite(), fread() и т.д. без Сишной обвязки.
Ответить | Правка | К родителю #301 | Наверх | Cообщить модератору

331. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Советский инженер (?), 23-Фев-23, 15:05 
отєто ты эксперт овпеннетовский.

морлр

Ответить | Правка | Наверх | Cообщить модератору

306. "Командную оболочку Fish планируют переписать на языке Rust"  +/
Сообщение от Аноним (90), 22-Фев-23, 16:55 
Т.е. бинарник на раст можно слинковать с libc и вычислить адреса функций и подставить их в места вызова и это будет работать? Я правда не знал. Если так, то сорри. Собственно про это и была речь изначально - либо libc заменяется на librust и тогда всё ок, либо дергать сисколы без libc, предварительно заполнив все нужные регистры нужными значениями и, конечно же, знать номера всех сисколов.
Ответить | Правка | К родителю #301 | Наверх | Cообщить модератору

300. "Командную оболочку Fish планируют переписать на языке Rust"  –1 +/
Сообщение от Аноним (263), 22-Фев-23, 16:25 
В реальности из rust программы можно делать системные вызовы без libc, а у redox то же самое программное прерывание 0x80 с тем же самым номером системного вызова в rax и передачей аргументов через регистры.
Собственно ничего другого придумать нельзя потому что программное прерывание единственный способ (по крайней мере в старых x86) сделать вызов чего-то типа "функции" не зная адрес вызова.

Я сегодня узнала что во многих архитектурах в том числе amd64 есть специальная инструкция SYSCALL но это по сути ничего не меняет. Она тоже не зависит от языка и операционной системы. Нет syscal, вызывай инструкции swi и int

Ответить | Правка | К родителю #283 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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