The OpenNET Project / Index page

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



"wolfIP и passt - легковесные стеки TCP/IP, работающие без динамического выделения памяти"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"wolfIP и passt - легковесные стеки TCP/IP, работающие без динамического выделения памяти"  +/
Сообщение от opennews (??), 14-Мрт-26, 12:54 
Разработчики криптографической библиотеки wolfSSL развивают TCP/IP стек wolfIP, оптимизированный для использования на встраиваемых устройствах, имеющих ограниченные ресурсы, а также для систем, работающих в режиме реального времени, и решений, требующих повышенной надёжности (Safety-Critical). Для предсказуемого потребления ресурсов в wolfIP не используется динамическое выделение памяти  - все буферы и таблицы сокетов имеют фиксированный размер и настраиваются на этапе компиляции. Код проекта написан на языке Си и распространяется под лицензией GPLv3...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=64989

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

Оглавление

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

1. Сообщение от Аноним (1), 14-Мрт-26, 12:54   +7 +/
Странно, почему весь критический код не пишется подобным образом. :)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8, #16, #18, #25, #72

2. Сообщение от Аноним (2), 14-Мрт-26, 12:56   –3 +/
> Использование при обработке сетевых пакетов предварительно выделенных в статической памяти буферов. Вызовы malloc и free не используются.

Жаль, что это не спасет от других тысячи способов получить UB на этом прекрасном языке.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6, #32, #35, #61

6. Сообщение от Аноним (6), 14-Мрт-26, 13:31   –2 +/
> Жаль, что это не спасет от других тысячи способов получить UB на этом прекрасном языке.

На этом прекрасном языке написали легковесный TCP/IP стек, в отличие от...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #10, #11

8. Сообщение от шолб (?), 14-Мрт-26, 13:40   –3 +/
Тогда не получится делать важное табло с надутыми щоками, которое очень нужно для залезания на табурет и декламирования "посмотрите какую сложную уробору я сделяль, как мощны мои лапищи." Современное программирование с технической стороны не про практичность, а про самоутверждение. А если и условия потребуют практичности, то она будет уровня "от сохи". Зато с апломбом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #29, #66

9. Сообщение от Аноним (54), 14-Мрт-26, 13:40   +1 +/
Кто-нибудь из этих проектов добавит, наконец, SCTP для микроконтроллеров?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24, #31, #46

10. Сообщение от Аноним (2), 14-Мрт-26, 13:41   +2 +/
Плохая попытка.
https://github.com/smoltcp-rs/smoltcp
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #13, #54

11. Сообщение от Аноним (11), 14-Мрт-26, 13:56   +/
Правильно писать: на этом прекрасном языке написали вагон и маленькую тележку стеков которыми пользуются все, в отличие от... Ожидаемо что и UB в штуках которыми не пользуются никого не интересуют. А если начинают пользоваться, то там тоже всякого вылазит, но чаще всего "ну мы прост не реализовали эту штуку реализованную ВЕЗДЕ, во всех других ЯП, потому что нишмагли"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

12. Сообщение от Аноним (12), 14-Мрт-26, 14:13   +/
> оптимизации на базе инструкций AVX2

Наверняка в QEMU внедрят и дропнут кору дуба.

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

13. Сообщение от Аноним (13), 14-Мрт-26, 14:20   +/
ls -lh smoltcp/target/release/libsmoltcp.rlib
17M авг  1  2022
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #15, #17

14. Сообщение от Аноним (29), 14-Мрт-26, 14:36   –2 +/
> требующих повышенной надёжности (Safety-Critical)
> написан на языке Си

Классика жанра. 🤦 Пишем софт для "повышенной надежности" с использованием языка, в котором эта надежность максимально скомпрометирована by design.

В их списке вулнов полно классических сишечных выходов за пределы буфера, но выводов такие ребята традиционно не делают:

https://www.wolfssl.com/docs/security-vulnerabilities/

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19, #78

15. Сообщение от Аноним (2), 14-Мрт-26, 14:48   +/
[profile.release]
debug = 2

и отсутствие LTO, так как ты собрал это как библиотеку.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #37

16. Сообщение от Аноним (16), 14-Мрт-26, 14:48   +6 +/
Вопрос из серии "почему в Солярис не ставят кресла с катапультой". Потому что это дорого. Раньше, когда информатизация была на начальном уровне, мир готов был мириться с инцидентами ИБ, потому что "писать более надёжно" было дороже, чем принять риски ИБ. Сейчас не так, всеобщая информатизация ведёт к потере гигатонн бабла из-за взломов и атак. Поэтому мир и начал двигаться в сторону секурити, начал закачивать туда бабло. Потому что это стало дешевле, чем терять деньги на атаках.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

17. Сообщение от Аноним (29), 14-Мрт-26, 14:49   +/
И что ты хотел сказать размером промежуточного файла растового компилятора? Нужно финальный бинарь мерять.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #39

18. Сообщение от Jh (?), 14-Мрт-26, 14:56   +1 +/
не факт что так лучше для критического софта. Переполнение стека никто не отменял)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #65

19. Сообщение от Аноним (19), 14-Мрт-26, 14:56   +/
Реалисты же. Сейчас практически все нормальные сдк для микроконтроллеров - на C, хрен туда впихнешь библиотеку на расте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #26, #27, #36

23. Сообщение от Аноним (54), 14-Мрт-26, 15:57   +1 +/
Соберём с --without-avx2.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #38

24. Сообщение от Аноним (24), 14-Мрт-26, 16:11   +/
В wolf даже IPv6 не завезли (хотя с IPv4 геморнее из-за де-факто необходимости пересобирать не влезающий в MTU пакет, если только не захардкодили бит выключающий это), какое там SCTP. Плюс у вас роутер, который в проде сегодня зачем-то будет использовать IPv4, натить ничего кроме TCP и UDP не умеет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #45, #56

25. Сообщение от timur.davletshin (ok), 14-Мрт-26, 16:24   +/
В подобных стеках традиционно масса дыр.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

26. Сообщение от Аноним (29), 14-Мрт-26, 17:29   +1 +/
> Реалисты же.

В реальности safety-critical и С не очень сочетаются, о чем говорит уже более полувека не прекращающийся поток классических сишечных ошибок.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #52, #59

27. Сообщение от Аноним (29), 14-Мрт-26, 17:33   +/
> Сейчас практически все нормальные сдк для микроконтроллеров - на C, хрен туда впихнешь библиотеку на расте.

Почему "хрен впихнешь"? Все эти россказни о том, что растовый код якобы получается в 10 раз больше аналогичного сишного - они уже порядком надоели и были не единожды опровержены даже тут в комментариях.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #70

29. Сообщение от Аноним (29), 14-Мрт-26, 17:43   +/
> нужно для залезания на табурет и декламирования "посмотрите какую сложную уробору я сделяль, как мощны мои лапищи." Современное программирование с технической стороны не про практичность, а про самоутверждение

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #64

31. Сообщение от Аноним (31), 14-Мрт-26, 17:57   +/
https://github.com/richlegrand/usrsctp-esp32
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

32. Сообщение от Аноним (-), 14-Мрт-26, 18:07   +/
Угу.

См. CVE-2009-1897.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #62

34. Сообщение от Гуманоид (?), 14-Мрт-26, 18:12   –1 +/
Почему сразу не было сделано таким образом?
Ответить | Правка | Наверх | Cообщить модератору

35. Сообщение от Аноним (-), 14-Мрт-26, 18:23   +1 +/
Ave Ada. Ave SPARK.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #55

36. Сообщение от Аноним (-), 14-Мрт-26, 18:33   +/
Rust: #[no_mangle] pub extern "C" fn my_func()

Ada: pragma Export (C, My_Func, "my_func")

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #60

37. Сообщение от Аноним (37), 14-Мрт-26, 19:09   +/
На C++ это не проблема.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

38. Сообщение от Аноним (37), 14-Мрт-26, 19:12   –1 +/
Ну уберут `--without-avx2`, расскажут "неразумным" любителям "хлама" что "нужно двигаться дальше".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #43

39. Сообщение от Аноним (37), 14-Мрт-26, 19:19   +/
Размер финального стрипнутого бинаря - 11M. Да, он всасывает всю функциональность smoltcp, и превращает её в cишную либу, кроме smoltcp и тонюсенькой обёртки вокруг неё в том бинаре ничего нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #49

40. Сообщение от Аноним (40), 14-Мрт-26, 19:46   +/
>использоваться в качестве работающего в пользовательском пространстве TCP/IP-стека, подменяющего сетевой стек

Зачем охранять ключи, если в пользовательском пространстве доступен весь код.
>(bare-metal)

Привет, руткит.
>все буферы и таблицы сокетов имеют фиксированный размер и настраиваются на этапе компиляции.

Атакеру много сокетов не надо.

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

41. Сообщение от Аноним10084 и 1008465039 (?), 14-Мрт-26, 19:57   +/
Не использовать динамическую память - одно из десяти NASA'вских правил для критичного кода
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #73

42. Сообщение от Аноним (42), 14-Мрт-26, 20:20   +/
Странно, что не на Zig. Он как раз под такое и заточен.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #44, #53

43. Сообщение от Аноним (54), 14-Мрт-26, 20:24   +/
Попросим какого-нибудь чата заменить ассемблерные вставки с этими вашими AVX на generic код на Сишке.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #69

44. Сообщение от Аноним (54), 14-Мрт-26, 20:27   +1 +/
И не подерётесь с рaстаманaми, и не подерётесь ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

45. Сообщение от Аноним (54), 14-Мрт-26, 20:31   +/
Во-первых, мне это в серой зоне адресов.
Во-вторых, мой роутер на OpenWRT в IPv6 может.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

46. Сообщение от Страдивариус (?), 14-Мрт-26, 20:37   +1 +/
Можно. А смысл?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #57

47. Сообщение от Аноним (47), 14-Мрт-26, 20:50   +/
По описанию на удивление очень годно и вкусно
Ответить | Правка | Наверх | Cообщить модератору

48. Сообщение от Аноним (48), 14-Мрт-26, 20:55   +/
Можно ли его собрать с выключенной поддержкой IPv4 и прочего барахла? Нужен только IPv6 SLAAC.
Ответить | Правка | Наверх | Cообщить модератору

49. Сообщение от Аноним (29), 14-Мрт-26, 21:05   +/
> Размер финального стрипнутого бинаря - 11M
> в том бинаре

Бинаря какой именно программы/библиотеки? Давай ссылку на код и опции сборки.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #82

50. Сообщение от Аноним (50), 14-Мрт-26, 21:11   –1 +/
> Код проекта написан на языке Си
> Safety-Critical

Ну смешно же.

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

51. Сообщение от Dmitry (??), 14-Мрт-26, 21:18   +/
А как с производительностью у такого стека?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #71

52. Сообщение от Сладкая булочка (?), 14-Мрт-26, 21:40   +/
> В реальности safety-critical и С не очень сочетаются

Если бы не сочетались, то никто бы не писал верифицированный компилятор для с.

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

53. Сообщение от Сладкая булочка (?), 14-Мрт-26, 21:53   +/
> Он как раз под такое и заточен.

Пока он заточен на то, чтобы в новых версиях ломать синтаксис.

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

54. Сообщение от Аноним (54), 14-Мрт-26, 21:58   +/
И многие знают про эту вашу "хорошую" попытку?  А тот же lwIP на Сишке знают многие микроконтроллерщики.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

55. Сообщение от Аноним (-), 14-Мрт-26, 21:59   +/
> Ave Ada. Ave SPARK.

Rest in peace Arian V, rest in peace...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #86

56. Сообщение от Аноним (-), 14-Мрт-26, 22:00   –1 +/
> В wolf даже IPv6 не завезли (хотя с IPv4 геморнее из-за де-факто
> необходимости пересобирать не влезающий в MTU

Это как? В новости написано "Из особенностей passt можно отметить: поддержка IPv6 помимо IPv4" - врут чтоли?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #76

57. Сообщение от Аноним (54), 14-Мрт-26, 22:01   +/
Не было бы смысла - не спрашивал бы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #75

58. Сообщение от Аноним (54), 14-Мрт-26, 22:04   +/
Просмеёшься, потом приходи.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

59. Сообщение от Аноним (-), 14-Мрт-26, 22:32   –1 +/
> В реальности safety-critical и С не очень сочетаются, о чем говорит уже более
> полувека не прекращающийся поток классических сишечных ошибок.

В реальности большая часть safety critical систем написана на си. А для ваших пафосных языков - даже просто гайдлайнов как sefety critical делать по сути - нет. И сертификаций и тех кто головой бы за это отвечать - тоже еще поискать. Или вон там у господ тулчейн на основе LLVM - проприетарный в хлам. Лицензия позволяет. Так что если не заплатил проприетарщику - во тебе, а не safety critical. Не, panic в runtime - совсем не "safe" в том смысле что контроль над ситуацией полностью теряется и это упс.

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

60. Сообщение от Аноним (-), 14-Мрт-26, 22:34   –2 +/
> Rust: #[no_mangle] pub extern "C" fn my_func()

Вот когда вы сможете написать фирмварь делающую что-то осмысленное - и доверите ей свою тушку - тогда и будете расказывать как оно.

> Ada: pragma Export (C, My_Func, "my_func")

Как показал пример Arian V - продолбать ракету ценой несколько гигабаксов можно и без таких сложностей.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #85

61. Сообщение от Аноним (61), 14-Мрт-26, 22:53   +2 +/
> Жаль, что это не спасет от других тысячи способов получить UB на этом прекрасном языке.

От тысяч способов получить UB спасает осведомлённость о возможности UB, которую программист может почерпнуть из документации.
Но это относится только к тем, кто понимает - UB в стандарте языка есть предупреждение, а не предписание.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #67

62. Сообщение от Аноним (-), 14-Мрт-26, 23:07   +/
> См. CVE-2009-1897.

В 2009 сабж еще не релизнулся даже...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #84

64. Сообщение от шолб (?), 14-Мрт-26, 23:49   –1 +/
Ты этот современный софт глазами видел, да? Да, именно что уровень хеллоуворлдов. И таки да, либо сумрачным (чайще всего ещё и упоротым) гением, либо толпой мартышек с сдвг. Нету у меня для вас других программистов, т-щ комментатор. И заказчиков тоже нету.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

65. Сообщение от senaemail (ok), 15-Мрт-26, 00:15   +1 +/
Так смайлик в конце об этом и намекает :)

Задавать размеры буферов на этапе компиляции это очень странная идея, граничащая с глупостью. Чем это безопаснее, чем задать размеры буферов, например, в конфиге?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #74

66. Сообщение от Аноним (66), 15-Мрт-26, 00:44   +/
" - Дядя, ты что - Арлекин-Петрушка?". В такой манере, как в сабже, на мой взгляд, значительно сложнее делать что-то нетривиальное - всё управление структурами внутри статически выделенной памяти, расчёт/запоминание их диапазонов и смещений и прочее ты ложишь на свои плечи, вместо, например, тупого динамического выделения нового куска памяти под очередной новый массив/структуру. Разве что реализация какого-нибудь кольцевого буфера там будет (почти) одинаковая. И в обоих случаях у тебя одинаковый шанс посчитать смещение неправильно и вылезти за пределы буфера.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

67. Сообщение от Аноним (29), 15-Мрт-26, 00:46   +/
> От тысяч способов получить UB спасает осведомлённость о возможности UB, которую программист может почерпнуть из документации.

Каасика жанра: чтобы не было ошибок - просто не делай ошибок.

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

69. Сообщение от Аноним (69), 15-Мрт-26, 01:39   +/
Ну и будешь сам свой форк поддерживать, а дистры просто кору дуба дропнут, сначала в этом пакете, а потом скажут "многие пакеты на коре дуба неработоспособны, пора её совсем дропнуть".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

70. Сообщение от Аноним (70), 15-Мрт-26, 01:46   +/
Ага, щщас.

То что можно извернуться, отказаться от гарантий языка, дропнуть стандартную библиотеку и запилить маленький хелловорлд — да, факт. Да и то, сишный хелловорлд с такими же допущениями будет в разы меньше.

А вот повседневный код — увы, нет. Раст выплёвывает копролитные погадки, слепленные из десятков, а то и сотен библиотек и весящие многие мегабайты, даже в релизном режиме.

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

71. Сообщение от Аноним83 (?), 15-Мрт-26, 03:13   +/
Да никак, он написан чтобы на всяком мусоре сеть появилась.
4200 строк нужно только для TCP, и то это мало если делать хорошую реализацию, со всеми фичами, которая сможет полностью канал утилизировать.

Авто написали минимально рабочий код, чтобы хоть как то работало.

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

72. Сообщение от Аноним (1), 15-Мрт-26, 07:24   +/
Забавно, что ни один эксперт который зашёл в этот тред не не написал, что работа с указателями тупо быстрее. А так как миром правят корпорации которым подавай все самое быстрое для высоконагруженных систем... Ну вы поняли. ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #77

73. Сообщение от Аноним (73), 15-Мрт-26, 08:51   +/
> Не использовать динамическую память - одно из десяти NASA'вских правил для критичного кода

Да и в MISRA насколько я помню сие весьма привествуется. Если вы не юзаете *alloc()/free и проч - вы и не облажаетесь в этом, соответственно. И из уравнения стабильности сиситемы вдолгую - выпадает "heap usage". Остается только стэк. Правда, отдельные таланты типа тойоты умудряются и с этим облажаться. Но от совсем идиотов - никакие measures не помогут.

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

74. Сообщение от Аноним (-), 15-Мрт-26, 09:46   +/
> Чем это безопаснее, чем задать размеры буферов, например, в конфиге?

Если ты задаешь такие вопросы - тебе рано в safety critical.

Например:
1) Это намного лучше подлежит статическому анализу, анализу потребления ресурсов и оценке worst cases. Нет, статический анализатор и проч - понятия не имеют - будет ли успешен этот вызов динамической аллокации в этой системе в этих конкретных условиях или где.

2) Если у тебя нет *alloc() и free() то ты в них не облажаешься.

3) Более того ты не облажаешься и в проверке того что *alloc() вернул null - ибо "never happens".

4) И вообще из уравнения выпадает "heap memory usage". Если вся остальная система следует тому же паттерну, это намного более надежный и предсказуемый софт, для которого намного проще оценивать долговременную надежность и стабильность. Потому что если ты alloc() а потом free() забыл - оно может месяцами подтекать память пока она не кончится окончательно, и отловить ВСЕ такие плюхи - упс.

Стэк это automatic mem management по сути. В простейшей форме. И требующий внимания к лайфтаймам, да. Но это работает. Еще можно заводить просто переменные в памяти с статичной аллокацией. Это не обязано быть в стеке. Но факт в том что heap можно из уравнения убрать. И динамическое управление памятью. Так намного надежнее: если на старте системе хватило памяти - она уже не закончится. Хоть как.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #79, #80

75. Сообщение от Страдивариус (?), 15-Мрт-26, 10:40   +/
> Не было бы смысла - не спрашивал бы.

Смысла нет, так как ни один известный мне роутер не умеет в NAT для SCTP. Протокол хороший, но популярности не получил. Так бы на нём и HTTP/3 делать, а не на убогом QUIC.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57 Ответы: #81

76. Сообщение от Аноним (76), 15-Мрт-26, 10:47    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56

77. Сообщение от name (??), 15-Мрт-26, 11:46   +/
Нет. Работа с индексами тупо быстрее, особенно если это подряд идущие индексы влезающие в кеш.
Работа с указателями это ад для cpu.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72

78. Сообщение от name (??), 15-Мрт-26, 11:51   +/
Все современные лифты в которых ты ездишь написаны на Си, если что.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

79. Сообщение от Анонимъemail (?), 15-Мрт-26, 11:55   +1 +/
В таком коде нет никакого free().

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

В остальном разницы нет, совсем.

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

80. Сообщение от senaemail (ok), 15-Мрт-26, 12:29   +/
по 2-4 тебе уже ответили - просто выделяем память на куче один раз при старте (и инициализируем её)

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

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

81. Сообщение от Аноним (81), 15-Мрт-26, 12:58   +/
Да причём здесь NAT, если нужно в приватной сети?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #83

82. Сообщение от Аноним (82), 15-Мрт-26, 13:07   +/
Не дам.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49

83. Сообщение от Страдивариус (?), 15-Мрт-26, 13:28   +/
> Да причём здесь NAT, если нужно в приватной сети?

Видимо, разработку оплачивают те, кому нужно, чтобы их девайсы ходили в интернет, а не которые ты там в своей приватной сети юзать собираешься. Тут ты можешь сам написать - это же тебе надо, это же open source.

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

84. Сообщение от Аноним (-), 15-Мрт-26, 13:54   +/
> В 2009 сабж еще не релизнулся даже...

Это просто пример этого поведения:

> Жаль, что это не спасет от других тысячи способов получить UB на этом прекрасном языке.

.

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

85. Сообщение от Аноним (-), 15-Мрт-26, 14:27   +/
> Как показал пример Arian V - продолбать ракету ценой несколько гигабаксов можно и без таких сложностей.

В которой сознательно не добавили проверки для горизонтальной скорости из Float64 в Int16, так как Ariane 4 не выходил за пределы Int16.

А вот Ariane 5 вышел — горизонтальная скорость у него набирается в пять раз быстрее. Исключение было легитимно поднято.

В Ada если в теле task было поднято исключение, и оно распространяется за его пределы (нет обработчика внутри тела), то задача считается abnormal и completed.

Супервайзер SRI обнаруживает, что задача завершилась ненормально. Для него любое аномальное завершение — неисправность. Разницы между программной и аппаратной ошибкой нет. Предписанное поведение при неисправности (по спецификации): зафиксировать контекст ошибки, записать диагностический пакет в выходную шину, завершить работу SRI.

Данные шли в ту же шину, в которую шли навигационные данные.

OBC на другом конце шины не различал "это навигационный пакет" и "это диагностика об ошибке" — такого разграничения в протоколе не было. Диагностический паттерн был интерпретирован как данные об ориентации ракеты. Значения оказались экстремальными. OBC добросовестно скомандовал максимальное отклонение сопел для "коррекции" отклонения, которого не было.

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

Это было сознательным организационным решением, не чьей-то забывчивостью.

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

86. Сообщение от Аноним (-), 15-Мрт-26, 14:30    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55


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

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




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

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