The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.69, opennews (??), 20-Апр-23, (0) [смотреть все]

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


24. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от AlexCr4ckPentest (ok), 21-Апр-23, 07:36 
> Сеть в стандартной библиотеке. Найс.

И что плохого?
во многих ЯП в стд есть модули для работы с сетью, ну кроме C и C++
Это удобно

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

30. "Выпуск языка программирования Rust 1.69"  –5 +/
Сообщение от Аноним (30), 21-Апр-23, 08:14 
В

> ЯП

не нужно совать то, что является функцией фреймворка.

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

40. "Выпуск языка программирования Rust 1.69"  +2 +/
Сообщение от AlexCr4ckPentest (ok), 21-Апр-23, 09:07 
> ...является функцией фреймворка

Простите, какого фреймворка?
Тот, который еще нужно собрать на все платформы и молиться, чтобы вообще собрался?
А зачем вообще фреймворк тащить, если тебе нужна только сеть?

Намного удобнее использовать модуль для работы с сетью из std, с гарантией при этом получив одинаковое поведение на всех платформах
А если не нужен - не подключай его, в чем проблемы?

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

42. "Выпуск языка программирования Rust 1.69"  +4 +/
Сообщение от BeLord (ok), 21-Апр-23, 09:22 
Не надо иметь зоопарк фреймворков на типовые вещи, работа с сетью штука типовая. А то потом получается, что реально программа имеет две операции записи/чтения, а весит, как крыло Боинга и тащит кучу зависимостей.
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

65. "Выпуск языка программирования Rust 1.69"  +1 +/
Сообщение от Аноним (63), 21-Апр-23, 12:23 
> А то потом получается, что реально программа имеет две операции записи/чтения, а весит, как крыло Боинга и тащит кучу зависимостей.

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

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

72. "Выпуск языка программирования Rust 1.69"  –1 +/
Сообщение от keydon (ok), 21-Апр-23, 12:49 
Наивные. Одним нужна либа с максимально производительной реализацией, другим нужно чтобы 192.168.36095 считался валидным ip адресом, третьи предпочтут 0000000001.0000000002.0000000003.000000004, четвертые 0xc0.0xa8.0x8c.0xff. И это мы еще не добрались до IPv6, подсетей, мультикастов, а если у нас не ip сеть....
Понятно, что 192.168.140.255 хватит в 99% случаев и возможно остальные варианты стоит прикопать, но это только пример одного вопроса реализации. И что-то мне кажется что выбор должен делать пользователь, а не язык должен указывать пользователю как жить.
Ответить | Правка | К родителю #42 | Наверх | Cообщить модератору

76. "Выпуск языка программирования Rust 1.69"  –1 +/
Сообщение от annonn (?), 21-Апр-23, 13:49 
ты не попал в эти 99% ?
ты как одинокая картошечка фри ?

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

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

100. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от keydon (ok), 21-Апр-23, 15:12 
> ты не попал в эти 99% ?
> ты как одинокая картошечка фри ?
> ну, тогда ты всегда можешь написать свою библиотеку для "особенных" пользователей сети
> где будет разрешено 192.168.0000000003.0x8c
> и пользоваться ею

Может мне еще свой одаренный язык для особенно одаренных написать? Постойте-ка, это же...

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

78. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Аноним (75), 21-Апр-23, 13:56 
> другим нужно чтобы 192.168.36095 считался валидным ... И это мы еще не добрались до IPv6

Что за бред. Есть стандартная отраслевая модель TCP/IP. Для IP4 и IP6. Там "все ходы расписаны". Для всех распространенных ОС, которые хотят взаимодействовать с другими ОС (особенно через Интернет), она одна и та же. Для 99.9% разработчиков, связанных с сетью хоть как-то, хоть косвенно (через чужие библиотеки), не нужно чтобы было нестандартно. Если ты хочешь такой бред, как написал - реализуешь свою собственную библиотеку. А стандартная библиотека языка реализует стандартную модель TCP/IP. Самую распространенную и востребованную.

> Одним нужна либа с максимально производительной реализацией

а вот тут ты и пишешь свои собственные костыли и подпорки, если стандартная не устраивает и у тебя есть силы и способности ее переплюнуть.

> а если у нас не ip сеть....

тем более только свои костыли, вроде очевидно. И эта очевидная необходимость совсем-совсем не является аргументом не реализовывать в стандартной библиотеке отраслевые стандарты, нужные "в 99% случаев"

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

97. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от keydon (ok), 21-Апр-23, 15:03 
>> другим нужно чтобы 192.168.36095 считался валидным ... И это мы еще не добрались до IPv6
> Что за бред. Есть стандартная отраслевая модель TCP/IP. Для IP4 и IP6.
> Там "все ходы расписаны".

Не знаю что такое отраслевая модель TCP/IP (в отличии от просто модели TCP/IP). Но этот бред и есть ip адрес по RFP'шкам для IPv4, там указано 32 бита, а в каком представлении - не указано (то есть далеко не все ходы расписаны). Для IPv6 указано, но довольно замороченно, я бы не рискнул писать парсер по стандарту.

> тем более только свои костыли, вроде очевидно. И эта очевидная необходимость совсем-совсем
> не является аргументом не реализовывать в стандартной библиотеке отраслевые стандарты,
> нужные "в 99% случаев"

Но тогда стандартная библиотека становится не стандартной, а скорее встроенной. И это грозит новыми проблемами с определением что считается стандартным случаем, а что нет. Так сделали например в python'е и в обрезанных версиях python'а для микроконтроллеров (справедливости ради python и не был  спроектирован для микроконтроллеров) стандартная либа часто обрезанная и не всегда может запустить "стандартные" же скрипты. Для питона это скорее ССЗБ, но для плюсов например реализация стандартных регулярок вызвала массу (справедливого) негатива. Так может все же язык оставить языком, реализации реализациями, а либы либами и не смешивать их? Впрочем для раста и линтер с компилятором решили объединить, а я тут с какими-то философскими проповедями пришел.

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

102. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Аноним (88), 21-Апр-23, 15:35 
Для такого у тебя есть nostd. Там нет практически ничего и все что нужно приходится тащить либами.
В std с++ есть Algorithms, которым по такой логике тоже там не место. Но они так есть.
А в сишной - есть math.h, который должны лежать в отдельной мат либе что ли?
Ответить | Правка | Наверх | Cообщить модератору

104. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от keydon (ok), 21-Апр-23, 15:44 
> Для такого у тебя есть nostd. Там нет практически ничего и все
> что нужно приходится тащить либами.

Норм
> В std с++ есть Algorithms, которым по такой логике тоже там не
> место. Но они так есть.
> А в сишной - есть math.h, который должны лежать в отдельной мат
> либе что ли?

Да. Я и не защищаю си в этом контексте

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

108. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Совершенно другой аноним (?), 21-Апр-23, 16:23 
Касательно math.h - так и есть, есть физически отдельная мат.либа libm.a.
Ответить | Правка | К родителю #102 | Наверх | Cообщить модератору

115. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Аноним (88), 21-Апр-23, 16:47 
Эти технически отдельная либа (файл), но фактически это часть стандартной либы языка си
C99 standard (ISO/IEC 9899:1999): 7.12 Mathematics <math.h>
Т.е. sin/cos/etc. зачем-то запихали в std.
Ответить | Правка | Наверх | Cообщить модератору

129. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от n00by (ok), 22-Апр-23, 07:53 
Мало того - стандарт обязывает поддержку математики даже для freestanding implementation. А вот это как раз тот рантайм (как минимум, флаги FPU должны быть настроены), которого у Си якобы нет.
Ответить | Правка | Наверх | Cообщить модератору

133. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Совершенно другой аноним (?), 22-Апр-23, 11:26 
Стандарт описывает характеристики типов с плавающей запятой, там нет функций. Настройка флагов FPU идёт в fenv.h, который не обязателен для freestanding.
Ответить | Правка | Наверх | Cообщить модератору

135. "Выпуск языка программирования Rust 1.69"  +1 +/
Сообщение от n00by (ok), 22-Апр-23, 14:03 
> Стандарт описывает характеристики типов с плавающей запятой, там нет функций.

То есть имплементация поддерживает плавающий тип данных. Значит, может производить арифметические операции. Соответственно, при переключении контекста (потока исполнения) ОС вынуждена сохранять регистры FPU.

В ядре из соображений экономии времени и памяти FPU не используется (при необходимости принимаются дополнительные меры) и формально получается, что там не conforming.

> Настройка флагов FPU идёт в fenv.h, который не обязателен для freestanding.

fenv.h позволяет пользователю настроить по своему желанию.

FLT_ROUNDS из float.h implementation-defined, но при этом он одинаков при каждом запуске после трансляции, то есть имплементация должна дать гарантии.

в частности в glibc флаги настраиваются по цепочке __libc_init_first --> posixland_init --> __setfpucw

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

139. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Совершенно другой аноним (?), 22-Апр-23, 20:41 
>> Стандарт описывает характеристики типов с плавающей запятой, там нет функций.
> То есть имплементация поддерживает плавающий тип данных. Значит, может производить арифметические
> операции. Соответственно, при переключении контекста (потока исполнения) ОС вынуждена
> сохранять регистры FPU.

какие в freestanding потоки? и какая ОС?

> В ядре из соображений экономии времени и памяти FPU не используется (при
> необходимости принимаются дополнительные меры) и формально получается, что там не conforming.

Вы про ядро, а при чём тут компилятор?

>> Настройка флагов FPU идёт в fenv.h, который не обязателен для freestanding.
> fenv.h позволяет пользователю настроить по своему желанию.
> FLT_ROUNDS из float.h implementation-defined, но при этом он одинаков при каждом запуске
> после трансляции, то есть имплементация должна дать гарантии.
> в частности в glibc флаги настраиваются по цепочке __libc_init_first --> posixland_init
> --> __setfpucw

это реализовано в libc. У нас есть своя программа, которую можно назвать прошивкой, там ничего этого нет, и ничего от gcc, который компилирует эту программу мы не требуем.

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

141. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от n00by (ok), 23-Апр-23, 08:33 
>>> Стандарт описывает характеристики типов с плавающей запятой, там нет функций.
>> То есть имплементация поддерживает плавающий тип данных. Значит, может производить арифметические
>> операции. Соответственно, при переключении контекста (потока исполнения) ОС вынуждена
>> сохранять регистры FPU.
> какие в freestanding потоки? и какая ОС?

Если я делаю conforming implementation, приходится учитывать окружение, где будет запускаться собранная программа. Если мне надо обеспечить компиляцию хелловорда в пригодный для запуска в Linux образ ELF размером 1,5 Кб, и при этом сохранить поддержку библиотекой полезных программ, то возникает вопрос - а что делать с флагами FPU и соответствием стандарту. А Вы с какой целью интересуетесь?

>> В ядре из соображений экономии времени и памяти FPU не используется (при
>> необходимости принимаются дополнительные меры) и формально получается, что там не conforming.
> Вы про ядро, а при чём тут компилятор?

Я про стандартную библиотеку, которая формально для ядра Linux отсутствует.

>>> Настройка флагов FPU идёт в fenv.h, который не обязателен для freestanding.
>> fenv.h позволяет пользователю настроить по своему желанию.
>> FLT_ROUNDS из float.h implementation-defined, но при этом он одинаков при каждом запуске
>> после трансляции, то есть имплементация должна дать гарантии.
>> в частности в glibc флаги настраиваются по цепочке __libc_init_first --> posixland_init
>> --> __setfpucw
> это реализовано в libc. У нас есть своя программа, которую можно назвать
> прошивкой, там ничего этого нет, и ничего от gcc, который компилирует
> эту программу мы не требуем.

Вопрос не в том, можно ли назвать прошивкой. Можно ли назвать используемую там библиотеку соответствующей стандарту имплеменатцией.

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

128. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от n00by (ok), 22-Апр-23, 07:49 
Алгоритмы с++  в std попали из библиотеки Степанова и Ли (СТЛ). Были они созданы как раз для "решения проблем Си" -- безопасной работы с массивами, наряду с контейнерами и итераторами. Это слой абстракции, а не реализация математики или работы с файлами (в частном случае сокетами). В других языках подобное встроено в язык, а не библиотеку. Впрочем, сокеты в std:: тоже добавили.
Ответить | Правка | К родителю #102 | Наверх | Cообщить модератору

157. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от Someone (??), 29-Май-23, 08:46 
> 0000000001.0000000002.0000000003.000000004, четвертые 0xc0.0xa8.0x8c.0xff.

Верхний адрес не валидный, так как занимает 40 байт места. Нижний вполне нормальный адрес 192.168.140.255. В IPv4 четко прописаны использование 32 Битов или 4 байтов. То есть все адреса (комбинации нулей и единиц) от 0000 0000 0000 0000 до 1111 1111 1111 1111 (или от 0x00 0x00 0x00 0x00 до 0xFF 0xFF 0xFF 0xFF)

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

159. "Выпуск языка программирования Rust 1.69"  +/
Сообщение от keydon (ok), 29-Май-23, 12:55 
> В IPv4 четко прописаны использование 32 Битов или
> 4 байтов. То есть все адреса (комбинации нулей и единиц) от
> 0000 0000 0000 0000 до 1111 1111 1111 1111 (или от
> 0x00 0x00 0x00 0x00 до 0xFF 0xFF 0xFF 0xFF)

Все верно. Это я и хотел сказать уважаемой публике.

>> 0000000001.0000000002.0000000003.000000004, четвертые 0xc0.0xa8.0x8c.0xff.
> Верхний адрес не валидный, так как занимает 40 байт места.

Но 0000000001.0000000002.0000000003.000000004 тоже может занимать 32 бита, если не считать первые нули значащими (что конечно конечно наркомания, но в IPv6 так и сделали, ну почти). Т.е. он тоже может быть валидным адресом. Можно пойти дальше и сделать адресом ツ
$ echo -n 'ツ' | xxd -b
00000000: 11100011 10000011 10000100
Добиваем до 4 байт (или наоборот отрезаем, если больше)
00000000 11100011 10000011 10000100
И оп, у нас валидный ip-адрес. Т.е. по сути все может быть ip-адресом в зависимости от парсера (таков путь неограниченных бинарных данных).

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

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

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




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

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