thumbnail of codes.png
thumbnail of codes.png
codes png
(256.09 KB, 1039x799)
thumbnail of plyazh Beach.png
thumbnail of plyazh Beach.png
plyazh Beach png
(1 MB, 1400x900)
thumbnail of blc.mp4
thumbnail of blc.mp4
blc mp4
(4.22 MB, 1420x920 h264)
thumbnail of uch.jpg
thumbnail of uch.jpg
uch jpg
(73.49 KB, 1000x807)
А может ну его. Зачем мне в инфраструктуре Лайси слой байткода? Я тут подумал, что он не нужен, лучше сразу компилировать Лайси в LLVM IR. Ведь если и подумать, то лайси-байткод почти полностью был подобен LLVM IR, там разве что тензоные инструкции были, ещё и с указателями.
Кстати, недавно у меня снова чуть не случился приступ высокоуровнезации стандарта Лайси. Я подумал, что обычные поинтеры это так боринг! Каждый раз переудалять их, следить за количеством. С шейред поинтерами всё гораздо легче. Вот тот же питон по сути и состоит из шейдер поинтер PyDecref PyIncref или как там в CPython. Конечно, я планировал, что shared ptr будет в библиотеке mem. Но тогда пользователю придётся всё время писать mem.shr или shr. А если сделать суффикс типа подобные звёздочке? Например &. structname& — shr. Но это же тогда в глобальных переменных придётся где-то выделять отдельную структуру под них... Не то чтобы это сложно или плохо. Просто если я буду вводить шейред поинтеры прямо в Лайси, то почему не ввести, например, вектор или ассоциативный массив? Всё-равно у меня стандартизировано обращение к куче через 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 используй, поехавший.
Не уверен на его счёт. Думаю, мне придётся генерировать некоторые инструкции вручную.