Anonymous
02/15/2021 (Mon) 07:19:58
No.9390
del
Начал вводить способность преобразования листданных в безымянную структуру типа struct {T[] ptr; numeric num;}.
Например, такой код:
struct {u8[] values; u16 num;} a = [2,6,4,3,7,89,12,54,12,6];
Это очень низкоуровневая операция, которая не должна будет использоваться условным программистом на Лайси без веской причины (например, нежелание юзать память в куче на микроконтроллере).
Эта фича будет применяться в библиотеки mem, когда к mem.vector или mem.tensor хотят += [листданные], то текстрелейтед будет передаваться в функцию в виде такой структуры. Суть структуры в том, что указатель values это указатель на константу, которая будет содержать в себе те самые листданные. Ну а num просто кол-во элементов. Пытаться заvaryть (реаллокить) этот указатель не стоит, иначе будет бобо.
Структура анонимная, потому что я не хочу вводить лишние кейворды или вообще темплейты в Лайси.
Я там реадмд.ми подправил, в общем мне осталось сделать всего лишь 18 фич и можно будет выпускать Laisi v0.8 и Icolaisi v1.0.
И потихоньку надо писать библиотеки mem, thread, math, io и repr (великая пятёрка библиотек).
Кстати, вспомнил, что и для ввода assert нужна эта фича с листданными. В liblaisi нужна будет функция print_assert, которая примет данную структуру, а в ней строка, которую надо вывести в stdout/stderr. Немного поwetчу в liblaisi, чтобы не было зависимости от mem, liblaisi и так собирается быть зависимым от thread, чтобы лочить мьютексы, если будут вводить свою систему хип-мемори.