Anonymous 08/17/2021 (Tue) 18:44:56 No.12141 del
(256.09 KB 1039x799 codes.png)
(1.00 MB 1400x900 plyazh Beach.png)
(4.22 MB 1420x920 blc.mp4)
(73.49 KB 1000x807 uch.jpg)
А может ну его. Зачем мне в инфраструктуре Лайси слой байткода? Я тут подумал, что он не нужен, лучше сразу компилировать Лайси в LLVM IR. Ведь если и подумать, то лайси-байткод почти полностью был подобен LLVM IR, там разве что тензоные инструкции были, ещё и с указателями.
Кстати, недавно у меня снова чуть не случился приступ высокоуровнезации стандарта Лайси. Я подумал, что обычные поинтеры это так боринг! Каждый раз переудалять их, следить за количеством. С шейред поинтерами всё гораздо легче. Вот тот же питон по сути и состоит из шейдер поинтер PyDecref PyIncref или как там в CPython. Конечно, я планировал, что shared ptr будет в библиотеке mem. Но тогда пользователю придётся всё время писать mem.shr<T> или shr<T>. А если сделать суффикс типа подобные звёздочке? Например &. structname& — shr<structname>. Но это же тогда в глобальных переменных придётся где-то выделять отдельную структуру под них... Не то чтобы это сложно или плохо. Просто если я буду вводить шейред поинтеры прямо в Лайси, то почему не ввести, например, вектор или ассоциативный массив? Всё-равно у меня стандартизировано обращение к куче через alloc, vary, del. Ну а там и треды можно добавить. Всё-равно обращение к куче требует локинга мьютексов, наверное.
Мне не так уж и сложно осталось всё сделать, но много. Из сложного надо продумать валидацию типов для вызова темплейтов (matrix[N][M] и matrix[M][N], например. Чтобы M и N были равны и оба были матриксами). Трудно когда приходится архитектуру расширять, ведь я всё время что-то не досматриваю.
В Лайси, кстати есть двойственность некоторых правил парсинга. То есть одни и те же правила похожи. Например, есть операнд обычный, а есть для alloc, vary и del и внутри себя они тоже могут иметь операнды, но последний тип не может иметь alloc vary или del.
Недавно я ещё понял, что операнды делятся на тензорные и скалярные. a[3:8] — тензорный, b — скалярный. Соответственно, a[5:2] + c[6:12] — тензорный операнд (типа expr). Но вот a[5:12]{+} (сумма, редюс с плюсом) уже будет скалярным.
У меня осталось ещё всего лишь 14 дней, чтобы выкатить первую настоящую версию Иколайси! Не уверен, что справлюсь, но я собираюсь справиться. Я недавно начал учиться планировать свою жизнь, пока что в небольших масштабах. Или предсказывать? В любом случае, где предсказание, там и самосбывающееся пророчество.

>>11860
>>11859
Ну ладно уже. Всё-равно видео были просто записью, не хочется писать в техподдержку.

>>11293
>BlenderCAM используй, поехавший.
Не уверен на его счёт. Думаю, мне придётся генерировать некоторые инструкции вручную.