[00:56:45] <ada_ru> (Лекс) немного оффтопа: https://collapseos.org/
[01:17:32] <ada_ru> (I_vlxy_I) вот если бы они умудрились такое на расте сделать...
[01:17:35] <ada_ru> (I_vlxy_I) 😄
[01:23:08] <ada_ru> (Лекс) эм... а почему не: а давайте сделаем такое на Аде и верифицируем на спарке?
[01:28:10] <ada_ru> (I_vlxy_I) отвечает (Лекс) на <эм... а почему не: а…>
не получится, увы
[01:28:27] <ada_ru> (I_vlxy_I) оно не сможет "Replicate itself."
[01:28:44] <ada_ru> (Лекс) нужно сделать чтобы смогло)
[01:29:04] <ada_ru> (Лекс) как Билан пел, про невозможное, которое возможно
[01:29:36] <ada_ru> (I_vlxy_I) ну, попробуй запихать компилятор Ады в z80 🙂
[01:29:44] <ada_ru> (I_vlxy_I) в 48 Кб рамы
[07:36:41] <ada_ru> (Eugene) на обероне!!!
[07:37:58] <ada_ru> (Eugene) I expect our global supply chain to collapse before we reach 2030. With this collapse, we won't be able to produce most of our electronics because it depends on a very complex supply chain that we won't be able to achieve again for decades (ever?).
[08:14:30] <ada_ru> (Oleg) Ого
[08:14:41] <ada_ru> (Oleg) Так она вся на asm
[08:14:58] <ada_ru> (Oleg) А так да, интересно
[08:27:01] <ada_ru> (Eugene) менуэтос/колибриос тоже на асме
[11:23:26] <ada_ru> (I_vlxy_I) Хм. А время жизни мемори пула может оказаться меньше чем время жизни его пользователей?
[11:34:57] <ada_ru> (Gourytch) z80 это в нынешних реалиях так себе.
лучше уж ESP32 наполнить Адой
[13:34:30] <ada_ru> (Максим) отвечает (I_vlxy_I) на <Хм. А время жизни ме…>
Нет. Ссылочный тип привязывается к Storage_Pool объекту, что, практически, означает, что Storage_Pool объект находится "на библиотечном уровне", ну типа static в С.
[13:50:14] <ada_ru> (I_vlxy_I) отвечает (Максим) на <Нет. Ссылочный тип п…>
В смысле он глобальный и время жизни = времени жизни программы?
[13:50:50] <ada_ru> (I_vlxy_I) А если переменная тоже глобальная? А если это другой сторадж пул который зависит от этого?
[13:54:53] <ada_ru> (Максим) отвечает (I_vlxy_I) на <В смысле он глобальн…>
Да, если ты укажешь в определении ссылочного типа Storage_Pool объект с меньшим временем жизни, чем сам тип, компиляться не будет
[13:55:40] <ada_ru> (I_vlxy_I) отвечает (Максим) на <Да, если ты укажешь …>
А как оно определяет время жизни? Штука на куче - вот сокольего оно живет?
[13:56:37] <ada_ru> (Максим) Обычно определяешь Strorage_Pool объект как переменную в пакете библиотечного уровня
[13:58:54] <ada_ru> (Максим) with System.Storage_Pools;
package St is
function F return System.Storage_Pools.Root_Storage_Pool'Class;
type Int_Access is access Integer
with Storage_Pool => F;
end St;
[13:59:00] <ada_ru> (Максим) st.ads:8:27: storage pool must be a variable
[13:59:35] <ada_ru> (I_vlxy_I) Вот у меня в куче какая-нибудь сложная структура данных, например какой-нибудь контейнер. Свои потроха (но не оболочку) он хочет хранить в каком-нибудь сторадж пуле, но сам он - живет где придётся. Или на стеке или в куче или глобально.
Таким образом возможна ситуация, когда сторадж пул уже помер, а этот контейнер ещё болтается в памяти.
[13:59:58] <ada_ru> (I_vlxy_I) И все его потроха стали невалидны так как пул сдох
[14:03:23] <ada_ru> (Максим) Storage_Pool он один для ссылочного типа. Это значит, что если твой контейнер использует такой ссылочный тип, то все контейнеры будут использовать ОДИН объект Storage_Pool. Если тебе надо, чтобы у каждого объекта-контейнера был свой, тогда нужно использовать Subpool-ы. А это ещё ужаснее 😄
[14:04:25] <ada_ru> (Максим) сторадж пул не может помереть, пока есть ссылочный тип
[14:06:00] <ada_ru> (I_vlxy_I) Ну, смотри, пишем свой контейнер типа.
Это просто record с одним полем ссылочного типа, и там мы храним наш payload.
И вот я указываю, что объекты нашего payload’a я хочу размещать вот в этом сторадж пуле.
При этом сам мой record может размещаться где угодно.
[14:06:06] <ada_ru> (I_vlxy_I) Пока тут все ок?
[14:06:53] <ada_ru> (Максим) да, но создавая ссылочный тип, ты уже должен иметь объект Storage_Pool с большим временем жизни
[14:08:43] <ada_ru> (I_vlxy_I) отвечает (Максим) на <да, но создавая ссыл…>
Сторадж пул будет глобальный - норм?
[14:08:52] <ada_ru> (Максим) да
[14:09:28] <ada_ru> (I_vlxy_I) Ок. Теперь смотри - я создаю свой record в куче. И не убиваю его
[14:09:45] <ada_ru> (I_vlxy_I) В этом случае его время жизни будет больше чем пула
[14:10:47] <ada_ru> (Максим) если сторадж пул будет глобальный, то время его жизни - вся программа
[14:12:43] <ada_ru> (I_vlxy_I) Программа умирает по частям же
[14:17:38] <ada_ru> (I_vlxy_I) И куча умрет последней. И, формально, мой record не умрет никогда
[14:46:32] <ada_ru> (Максим) думаешь? или это где-то написано? 😄
[14:48:40] <ada_ru> (I_vlxy_I) отвечает (Максим) на <думаешь? или это где…>
Думаю, да :-)
[14:48:57] <ada_ru> (I_vlxy_I) Алсо что если мой record тоже глобален?
[14:52:33] <ada_ru> (Максим) я не понимаю твоих проблем 😕
[14:54:47] <ada_ru> (I_vlxy_I) Да я просто утечки памяти ловлю в крупном плюсатом проекте. И стало интересно, как оно там в Аде.
В частности тут используются shared_ptr чтобы гарантировать, что глобальный пул не умрет раньше пользователя его (пользователь тоже глобальным может быть).
[14:55:22] <ada_ru> (I_vlxy_I) Также такое решение приводит к тому, что утёкший пользователь заставляет утекать и весь пул целиком.
[15:00:45] <ada_ru> (I_vlxy_I) Но так то это минорщина конечно. Ибо утечка тут весьма условная.
То есть это лучше чем если бы при завершении работы объекты в пуле были бы живыми, но не валидными, так как пул уже умер.
[15:27:17] <ada_ru> (I_vlxy_I) Наверно я как-то непонятно описываю все эти механизмы :-(
[15:55:19] <ada_ru> (Максим) А, типа если сделать Storage_Pool c финализацией, не стрельнет ли его финализация раньше, чем надо? Не знаю. Это для меня тёмная тема. Эти Controlled типы переделывают постоянно...
[16:09:31] <ada_ru> (I_vlxy_I) отвечает (Максим) на <А, типа если сделать…>
Типа того, да
[16:43:14] <ada_ru> (I_vlxy_I) отвечает (Максим) на <А, типа если сделать…>
В стандарте переделывают? Мне казалось оно устаканилось давно.
[16:51:03] <ada_ru> (Максим) Нет, реализацию
[16:51:47] <ada_ru> (I_vlxy_I) отвечает (Максим) на <Нет, реализацию>
А какая из реализаций соответствует стандарту? Все?
[17:05:13] <ada_ru> (Максим) Да я не вникал, если честно. Наверное находили какие-то дыры и исправляли из-за этого
[17:35:28] <ada_ru> (I_vlxy_I) Представляю что было бы если бы у плюсов постоянно меняли семантику деструкторов :-)
[17:36:11] <ada_ru> (I_vlxy_I) Это же самая используемая фича языка!
[17:36:23] <ada_ru> (I_vlxy_I) Ну, в паре с конструкторами
[20:05:31] <ada_ru> (Максим) @I_vlxy_I прибежали спрашивать какого я полез Аду в Конан интегрировать 😄
[20:05:42] <ada_ru> (Максим) спалили мой репо на GH
[20:05:55] <ada_ru> (I_vlxy_I) отвечает (Максим) на <@I_vlxy_I прибежали …>
:-D
[20:06:06] <ada_ru> (I_vlxy_I) Конкуренция!
[20:06:56] <ada_ru> (Максим) да!
[20:09:11] <ada_ru> (I_vlxy_I) В конане мне нравится гибкость и универсальность.
Скажем тот же vcpkg (тоже пакетный менеджер для крестов) он гвоздями прибит и к c++ и к cmake, что меня, как крестовика, категорически не устраивает. Хоть он и писан на c++ и в этом плане считается вроде как более кошерным.
[20:09:13] <ada_ru> (Максим) > We decided not to use it because it is not generic enough to support Ada/SPARK
[20:09:44] <ada_ru> (I_vlxy_I) Хм. О что там недостаточно дженерик?
[20:10:17] <ada_ru> (I_vlxy_I) Это ж не билд система. Собирать пакеты один фиг будет gprbuild
[20:10:30] <ada_ru> (Максим) не, ну я их, конечно, понимаю. сам люблю написать велосипед!
[20:11:01] <ada_ru> (I_vlxy_I) Это да!
[20:12:28] <ada_ru> (I_vlxy_I) Велосипеды - наше всё! Ну и NIH конечно :-)
[20:32:52] <ada_ru> (I_vlxy_I) Мой основной поинт в конане, что он держит и Си с С++ тоже пакеты, умеет бинарные пакеты и умеет произвольные системы сборки, коих для сей миллион.
А у Ады часто бывают биндинги к сишным либам. Следовательно пакетный менеджер должен суметь эти либы добыть. И если нет бинарей, то добыть и собрать.
И чтобы все всех нашли.
[20:33:05] <ada_ru> (I_vlxy_I) Причём нужной версии
[20:34:34] <ada_ru> (I_vlxy_I) К сожалению для плюсов в конане (в публичных репах) пока не так много пакетов как хотелось бы - всего порядка 600 думаю.
[20:35:23] <ada_ru> (Максим) да, звучит логично. питон меня только угнетает 😕
[20:36:31] <ada_ru> (I_vlxy_I) Ну, тот же vcpkg наполовину писан на с++, половина на cmake. А cmake, как язык, это вообще хтонический ужас. Питон после него сказкой кажется :-)
[20:36:36] <ada_ru> (Максим) Да и одному тащить это дело не реально, мне кажется. Даже для Ады :) Я туда своих любимых пакетов натолкаю, а такое дерьмо, как GNATCOLL не буду
[20:36:50] <ada_ru> (I_vlxy_I) Ну и поставить Конан это просто pip install conan
[20:37:15] <ada_ru> (I_vlxy_I) Я смотрю ты нежно любишь gnatcoll :-)
[20:38:57] <ada_ru> (Максим) да! кроме этого меня давит жаба, что чудесную матрешку никто не видит/использует, а gnatcoll это АдаКоре, значит круто! Пора к психиатру 😊
[20:39:49] <ada_ru> (Максим) а сравнить код в GNATCOLL, с тем, что забвигают про надёжность! да капец, короче
[20:40:55] <ada_ru> (I_vlxy_I) Что, gnatcoll в прошивке мед. оборудования это не очень хорошо?
[20:41:16] <ada_ru> (mister_alexander) отвечает (Максим) на <@I_vlxy_I прибежали …>
Нет, пришли сказать что Ада не нужна 😊
[20:43:13] <ada_ru> (I_vlxy_I) Нужна! Alire!
[20:43:32] <ada_ru> (mister_alexander) ненужна
[20:44:32] <ada_ru> (Максим) опять тупые троли с тупыми набросами! 😄
[20:44:41] <ada_ru> (I_vlxy_I) Мне надо поупражняться с конаном, так что может и я что-то для Ады попробую. :-)
[20:45:06] <ada_ru> (Максим) попробуй мой ASIS пакет 😊
[20:45:29] <ada_ru> (I_vlxy_I) Ок :-)
[20:45:31] <ada_ru> (Максим) https://github.com/reznikmm/conan-ada-index
[20:46:21] <ada_ru> (Максим) Принимаю пул реквесты 😉
[20:49:03] <ada_ru> (mister_alexander) отвечает (Максим) на <опять тупые троли с …>
уоу уоу палехчи
[20:50:10] <ada_ru> (Максим) отвечает (mister_alexander) на <уоу уоу палехчи>
Скажи, что Ada и alire нужны!
[20:50:25] <ada_ru> (mister_alexander) Легко
[20:50:36] <ada_ru> (mister_alexander) Ada и alire
[20:50:43] <ada_ru> (mister_alexander) не получается
[20:54:46] <ada_ru> (mister_alexander) так что ненужны
[20:55:29] <ada_ru> (Максим) иди компиляй gnat-llvm, пока не осилишь!
[20:56:06] <ada_ru> (I_vlxy_I) Нужны ли мы нам?
[20:58:11] <ada_ru> (mister_alexander) нет
[21:16:14] <ada_ru> (Andry Ogorodnik) Хотите об этом поговорить? ;)
[21:18:44] <ada_ru> (mister_alexander) отвечает на <(Andry Ogorodnik) Хо…>
хотим
[21:18:49] <ada_ru> (mister_alexander) =)
[22:16:45] <ada_ru> (Andry Ogorodnik) Ну говорите ;)
[23:17:26] <ada_ru> (Лекс) Как тебе такое, Илон Маск? https://golangexample.com/a-lightweight-alternative-to-electron-written-in-golang/ p.s. сорян за оффтоп, но помоему здесь и так все и делают что оффтопят
[23:19:54] <ada_ru> (I_vlxy_I) Максим пообщался с разработчиками - конановцы/бинкрафтеры обещают сделать таки адекватный сайт, а не то убожество, что сейчас