[00:02:47] <ada_ru> (I_vlxy_I) "Ready? Go!"
не правильно в статье написано! надо так:
"Ready? RUST!"
[00:06:14] <ada_ru> (Oleg) adaAdaSPARK
[00:06:46] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <adaAdaSPARK>
кококомбо!
[00:08:09] <ada_ru> (Oleg) Давайте тащить Аду в секюрити
[00:09:27] <ada_ru> (Oleg) Я уже начал пилить новый модный молодёжный syslog коллектор на аде
[00:09:41] <ada_ru> (Oleg) С уклоном в секурити
[00:13:24] <ada_ru> (Oleg) Парни весна пришла !
[00:15:12] <ada_ru> (Yurymaster) Марток, надевай двое порток.
[00:15:56] <ada_ru> (Oleg) :-)
[00:16:10] <ada_ru> (Oleg) Ага в Питере вчера снег выпал
[00:16:15] <ada_ru> (Oleg) Всю зиму небыли
[00:16:17] <ada_ru> (Oleg) :-)
[00:18:52] <ada_ru> (I_vlxy_I) у нас в четверг обещают +11
[00:19:20] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <Парни весна пришла !>
типа весеннее обострение, давайте тащить аду в сесурити? 🙂
[00:23:16] <ada_ru> (Oleg)  отвечает (I_vlxy_I) на <типа весеннее обостр…>
Точно !
[00:26:18] <ada_ru> (Oleg) А адакор в России вообще интерес имеет?
[00:26:57] <ada_ru> (I_vlxy_I) сомнительно. со слонопотамами российскими им часто запрещено работать - санкции и прочие законодательные припоны
[00:27:18] <ada_ru> (I_vlxy_I) то есть в ядерной промышленности например есть проблемы
[00:27:33] <ada_ru> (Oleg) Так они французы же?
[00:27:46] <ada_ru> (I_vlxy_I) адакор - американско-френцузская контора
[00:27:59] <ada_ru> (I_vlxy_I) во франции была дочка, теперь единая корпорация
[00:28:22] <ada_ru> (Oleg) Понятно
[00:28:31] <ada_ru> (Oleg) Слышали про TI
[00:28:33] <ada_ru> (Oleg) ?
[00:28:58] <ada_ru> (I_vlxy_I) "In 1994 and 1996, the original authors of GNAT founded two sister companies, Ada Core Technologies in New York City and ACT-Europe (later AdaCore SAS) in Paris, to provide continuing development and commercial support of GNAT. The two companies always operated as one entity, but did not formally unify until 2012 as AdaCore."
[00:29:11] <ada_ru> (I_vlxy_I) "The GNAT project started in 1992 when the United States Air Force awarded New York University (NYU) a contract to build a free compiler for Ada to help with the Ada 9X standardization process."
[00:29:22] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <Слышали про TI>
а что там? там вроде всегда было под регуляцией
[00:29:30] <ada_ru> (Oleg) Сейчас минуту
[00:29:51] <ada_ru> (Oleg)  цитирует (Oleg)
Уважаемый клиент компании TI!

Как Вам уже может быть известно, мы (компания TI) находимся в процессе прекращения сотрудничества с рядом наших дистрибьюторов. Цель данного письма – помочь Вам продолжить своевременно получать необходимую продукцию TI. Пожалуйста, ознакомьтесь с информацией, приведенной ниже, и в случае необходимости перешлите это письмо Вашим коллегам, отвечающим за закупки и снабжение.

Действия, которые необходимо предпринять нашим клиентам, чтобы продолжить своевременно получать продукцию TI:
Если в настоящий момент Вы приобретаете продукцию TI через следующих дистрибьюторов: «Компэл», «МТ-Системс», «Avnet» («Silica»), «Eastronics», «Telsys», «WPI» или «WT», – мы рекомендуем Вам и Вашим партнерам по поставкам немедленно начать переводить весь Ваш новый и текущий бизнес в следующие долговременные каналы поставок:
 •   Arrow Electronics, наш авторизованный дистрибьютор широкого профиля во всех регионах, кроме Японии
 •   Покупки через сайт TI.com
 •   DigiKey или Mouser, наши авторизованные каталожные дистрибьюторы
 •   TED или Macnica, наши авторизованные дистрибьюторы широкого профиля в Японии
[00:30:35] <ada_ru> (Oleg) Компел был основной мой поставщик
[00:30:51] <ada_ru> (I_vlxy_I) ну, бывает, чо. а почему они прекращают с ними работать?
[00:31:56] <ada_ru> (Oleg) Да не раскрывают
[00:33:32] <ada_ru> (Oleg) Кстати буду за компом кину вам проект - идею
[00:45:21] <ada_ru> (I_vlxy_I) https://blog.rust-lang.org/inside-rust/2020/02/26/crates-io-incident-report.html
[00:45:28] <ada_ru> (I_vlxy_I) rustRustRUST 🙁
[00:45:56] <ada_ru> (I_vlxy_I) фикс: https://github.com/rust-lang/crates.io/pull/2207/files
[00:46:29] <ada_ru> (I_vlxy_I) какой смысл делать по умолчанию в языке всё иммутабельным, если один фиг по факто ВСЁ обмазывают спецификатором mut?
[00:47:11] <ada_ru> (Oleg) И не говори
[00:54:54] <ada_ru> (I_vlxy_I) капец. в расте, оказывается, замыкания захватывают вообще ВЕСЬ контекст по умолчанию. то есть лямбда может менять ЧТО УГОДНО
[00:55:00] <ada_ru> (I_vlxy_I) это ж ваще капец и антипаттерн
[00:56:01] <ada_ru> (I_vlxy_I) вот в этом примере фикса лямбда внезапно внутри себя меняет переменную (стековую) которая зовется callback_called
[00:56:16] <ada_ru> (I_vlxy_I) капец же, ну! в плюсах безопасней сделано
[00:57:21] <ada_ru> (I_vlxy_I) там, по умолчанию, захватывается тоже всё, но не по референсу, а по копии. но у нас например в кодинг стайле сказано, что неплохо бы явным образом перечислить что именно будешь хватать и что лямбде нужно. как только ты указал хотя бы один элемент - всё, все остальное тебе больше неявным образом не доступно.
[00:57:59] <ada_ru> (Oleg) Мда....
[02:19:11] <ada_ru> (I_vlxy_I) let x = 13;
let x = x + 3;
// using `x` after that line only refers to the second `x`,
// the first `x` no longer exists.
[02:19:23] <ada_ru> (I_vlxy_I) ocaml way 😄
[08:21:50] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <ocaml way 😄>
И это норм. Компиляторы тоже с прогой сразу так делают, SSA форма называется :)
[08:27:05] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <фикс: https://github…>
Странно, что статус сначала инициализируют в ok. Я обычно наоборот делаю, по-умолчанию статусы всегда Error, чтобы, если упустил проапдейтить статус в какой-то ветке выполнения, это сразу всплыло.
[08:29:34] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <там, по умолчанию, з…>
А вот это в плюсах меня удивило когда-то. Разве компилятор по-умолчанию не может сам сформировать точное множество захватываемых переменных? Зачем всё то хватать?
[12:54:27] <ada_ru> (I_vlxy_I)  отвечает (vasil_sd) на <А вот это в плюсах м…>
Компилятор может и делает. Это для безопасности.
[12:54:41] <ada_ru> (I_vlxy_I) Язык для людей, а не компиляторов :-)
[12:57:00] <ada_ru> (I_vlxy_I) Контракт же по факту :-)
[14:45:44] <ada_ru> (geniepro)  отвечает (I_vlxy_I) на <let x = 13;
let x = …>
ну примерно как в хаскелле с его do-нотацией, там тоже можно перекрывать имена новыми переменными
[14:54:32] <ada_ru> (I_vlxy_I)  отвечает (geniepro) на <ну примерно как в ха…>
Это ж не то.
[14:54:40] <ada_ru> (geniepro) почти тоже самое
[14:54:49] <ada_ru> (I_vlxy_I) Это вложенные лямбды
[14:55:09] <ada_ru> (geniepro) ну вот и относись к иксам в окамле как к вложенным лямбдам
[14:55:11] <ada_ru> (I_vlxy_I) Так то и с в с++ такое есть и в Аде, ага
[16:23:33] <ada_ru> (Oleg) картинка https://www.ada-ru.org/files/bot/2020-03-01-x3.jpg
[16:31:04] <ada_ru> (Oleg) Сушилка
[16:34:29] <ada_ru> (I_vlxy_I) На каких оборотах лучше сушить?
[16:36:43] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <Компилятор может и д…>
Ага, очень безопасно: [&].
Плюсы и безопасность чуть ли не антонимы :)
[16:37:10] <ada_ru> (I_vlxy_I)  отвечает (vasil_sd) на <Ага, очень безопасно…>
А в расте это по умолчанию :-)
[16:39:06] <ada_ru> (I_vlxy_I) Тут опасное поведение в плюсах включается явным образом программистом
[16:40:04] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <Тут опасное поведени…>
Да, в этом случае Раст пожалуй опустился до уровня плюсов...
[16:44:59] <ada_ru> (I_vlxy_I)  отвечает (vasil_sd) на <Да, в этом случае Ра…>
Ниже. В плюсах такое поведение нужно явным образом включать
[17:09:19] <ada_ru> (I_vlxy_I) ну, или до уровня Го 🙂
[17:09:45] <ada_ru> (I_vlxy_I) так можно делать только в нормальных функциональных языках, где сплошная иммутабельность. то есть например в хаскелле. В окамле - уже нет.
[17:12:45] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <так можно делать тол…>
В окамле мутабельность явно включается, и работа с ней идёт явно, так что это не является серьезной проблемой.
В Аде, кстати, вложенные функции локальные переменные захватывают по ссылке....
[17:13:33] <ada_ru> (I_vlxy_I)  отвечает (vasil_sd) на <В окамле мутабельнос…>
она может быть включена для одного поля какой-то структуры. то есть на "контракт" это не влияет. и вот ты в лямбде по референсу захватываешь эту структуру и давай мутировать там это поле
[17:14:09] <ada_ru> (I_vlxy_I)  отвечает (vasil_sd) на <В окамле мутабельнос…>
а в Аде такие функцие - не значения. то есть их нельзя никуда сохранить или передать.
[17:15:10] <ada_ru> (vasil_sd) Там поле будет типа ref T, и доступ будет явный. То есть в коде это сразу видно будет.
[17:16:37] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <а в Аде такие функци…>
Передавать - запросто, сохранить да, без unchecked не получится, что немного спасает
[17:17:15] <ada_ru> (I_vlxy_I) хм. у меня не удалось передать ссылку на внутреннюю функцию вовне. или я пытался сохранить? не помню
[17:18:27] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <хм. у меня не удалос…>
По скоупу выше нормально не передать, но по стеку вызовов ниже - без проблем
[17:18:51] <ada_ru> (I_vlxy_I) дык это ж ортогональные штуки
[17:19:01] <ada_ru> (I_vlxy_I) стек штука динамическая, скоуп - статическая
[17:19:30] <ada_ru> (I_vlxy_I) скажем передать ссылку на внутреннюю процедуру в функцию сортировки массива из стандартной либы
[17:20:39] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <скажем передать ссыл…>
Уровни вызовов и скоуп связаны 1к1
[17:22:16] <ada_ru> (I_vlxy_I) э? функция сортировки - в глобальном скоупе (лежит себе в пакете), а наша функция которая operator<, может быть в body-пакета и быть в глубоком...скоупе процедуры локальной процедуры подпроцедуры в declare - блоке
[17:22:36] <ada_ru> (I_vlxy_I) ну и вызвать глобальную функцию сортировки мы тоже оттуда же можем
[17:22:42] <ada_ru> (I_vlxy_I) в каком месте тут 1 в 1 вообще?
[17:23:33] <ada_ru> (vasil_sd)  отвечает (I_vlxy_I) на <э? функция сортировк…>
Все, я понял почему у нас недопонимание :) я слово скоуп не в том смысле употребил :)
[17:24:07] <ada_ru> (I_vlxy_I) а, ок 🙂
[17:25:48] <ada_ru> (vasil_sd) В общем смысл моего посыла был в том, что указатели на локальные функции вниз по стеку вызовов передать можно, а вверх нельзя без unchecked
[17:26:14] <ada_ru> (vasil_sd) Ну и соответственно во вне сохранить тлже
[17:29:59] <ada_ru> (I_vlxy_I) а как оно поймет это вниз или вверх? примеров когда можно хочется 🙂
[17:30:52] <ada_ru> (vasil_sd) Сейчас не у компа, там просто считаются уровни и сравнивается. У Барнса это подробно расписано