Size: a a a

2020 May 08

AZ

Alex Zhukovsky in rust_offtopic
еще раз: есть интерпретатор паскаля
источник

AZ

Alex Zhukovsky in rust_offtopic
значит интерпретаторы без гц - бывают
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Ещё можешь про регионы прочитать, оно менее точное, но зато достаточно тупое для реализации.

Ещё вариант - сделать язык с полным partial evaluation, и дальше туда заинлайнить и заспециализировать гц в каждую функцию и получить asap автоматом
Дык регионы это то шо в расте же - не?
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
значит интерпретаторы без гц - бывают
А зачем? Кроме как для разработки если не хочешь ждать компиляции.
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
А зачем? Кроме как для разработки если не хочешь ждать компиляции.
ну для обучения например компилировать не нужно
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Ещё можешь про регионы прочитать, оно менее точное, но зато достаточно тупое для реализации.

Ещё вариант - сделать язык с полным partial evaluation, и дальше туда заинлайнить и заспециализировать гц в каждую функцию и получить asap автоматом
Ну вот если ниче не придумаю то буду на асап смотреть
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Дык регионы это то шо в расте же - не?
Нет
источник

B

Bogdan in rust_offtopic
офигеть насколько float быстрее double

(на видяхе, на проце в два раза просто)
источник

SP

Stanislav Popov in rust_offtopic
Bogdan
офигеть насколько float быстрее double

(на видяхе, на проце в два раза просто)
нот бед
источник

G

Gymmasssorla in rust_offtopic
🦉 ⁣
Не рендерит индексы
источник

G

Gymmasssorla in rust_offtopic
Я хотел красиво красиво не получилось
источник

G

Gymmasssorla in rust_offtopic
придётся просто цифры писать уродливо
источник

NL

Nick Linker in rust_offtopic
polunin.ai
Ты прочитал?
Без пина нельзя взять ссылку на объект, потому что нельзя взять ссылку на Movable данные
Раз уж ты пишешь новый язык, можешь ещё рассмотреть и такую возможность, что при move самоссылающихся структур рантайм делает следующее:
1. перемещает память
2. патчит указатели

Сейчас в расте рантайм для нас только перемещает память, и для самоссылающихся структур нужны церемонии.

А, да, своём списке [●] ты ещё про Cow ничего не написал почему-то.

Как уже правильно подметили, без теории никуда.

[●] https://t.me/rust_offtopic/245229
Telegram
p0lunin in rust_offtopic
Зацените мои наркоманские мысли по поводу менеджмента памяти:
1. По умолчанию объекты хранятся на стеке.
2. Есть Copy и не-Copy типы. Первые при передаче в функции копируются всегда, вторые муваются (типо как в расте).
3. Есть Movable и не-Movable типы данных. По умолчанию тип Movable - значит при передаче в качестве аргумента он будет муваться. Если объект не Movable, значит его владение нельзя никуда передавать.
4. Предыдущий пункт нужен чтобы провернуть следующую штуку. Будет встроенный тип Ref (ссылка), который сам Movable, а внутри держит не-Movable тип (ну обычный указатель, хули). Но как вы уже поняли внутрь него нельзя поместить обычный тип так как он Movable. Для того чтобы сделать !Movable тип, можно использовать:
1. Pin, который гарантирует что данные не уйдут со стека.
2. Box, который гарантирует что данные хранятся в динамической памяти и не сдвинутся.
3. Rc.
Ну и может ещё пару умных указателей если понадобятся.
5. Итого как это будет работать: если вам необходимо передать из метода ссылку в другой…
источник

NL

Nick Linker in rust_offtopic
Gymmasssorla
придётся просто цифры писать уродливо
Можно буквы греческого алфавита.
источник

PP

Piu Piu in rust_offtopic
Bogdan
офигеть насколько float быстрее double

(на видяхе, на проце в два раза просто)
а
источник

С

Сергей in rust_offtopic
polunin.ai
Зацените мои наркоманские мысли по поводу менеджмента памяти:
1. По умолчанию объекты хранятся на стеке.
2. Есть Copy и не-Copy типы. Первые при передаче в функции копируются всегда, вторые муваются (типо как в расте).
3. Есть Movable и не-Movable типы данных. По умолчанию тип Movable - значит при передаче в качестве аргумента он будет муваться. Если объект не Movable, значит его владение нельзя никуда передавать.
4. Предыдущий пункт нужен чтобы провернуть следующую штуку. Будет встроенный тип Ref (ссылка), который сам Movable, а внутри держит не-Movable тип (ну обычный указатель, хули). Но как вы уже поняли внутрь него нельзя поместить обычный тип так как он Movable. Для того чтобы сделать !Movable тип, можно использовать:
1. Pin, который гарантирует что данные не уйдут со стека.
2. Box, который гарантирует что данные хранятся в динамической памяти и не сдвинутся.
3. Rc.
Ну и может ещё пару умных указателей если понадобятся.
5. Итого как это будет работать: если вам необходимо передать из метода ссылку в другой метод на данные на стеке, вам нужно их припинить. Сам пин это просто маркер, то есть он зиро кост и нужен только для борроу чекера. Затем создаётся ссылка и передается в функцию. Там функция делает чё она хочет с ссылкой как с обычным объектом (как в расте).
6. Если хочется передать ссылку в другой поток то будешь огорчён потому что ссылки не Send, поэтому создавай что-то другое.
7. У меня нет никаких глобальных переменных от слова совсем, так что передать ссылку куда-то так чтобы она стала невалидной невозможно (ну на самом деле не оч так, смотри следующий пункт).

И все вроде заебись (или нет), но я хз чё делать с возвратом ссылки из метода наверх. Как проверить, закончилось время жизни внутренних данных или нет. Вообще зачем я это все придумал - чтобы избавиться от лайфтаймов. Но хз как чекать возвращаемую ссылку без лайфтаймов. Не ну я представляю как это можно сделать, но кмк это сильно удлинит время компиляции из-за проверки всего лайфтайма объекта и ссылок на него.

Оцените по шкале юзабкльности от 1 до 10
Изобрёл pony-lang?
источник

NL

Nick Linker in rust_offtopic
Сергей
Изобрёл pony-lang?
Попытка изобрести verona как я понимаю.
источник

KR

Kai Ren in rust_offtopic
polunin.ai
Дык регионы это то шо в расте же - не?
Глянь очень внимательно polonius. Я могу ошибаться, но ЕМНИП его алгоритм решает необходимость наличия Pin'ов.
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Зацените мои наркоманские мысли по поводу менеджмента памяти:
1. По умолчанию объекты хранятся на стеке.
2. Есть Copy и не-Copy типы. Первые при передаче в функции копируются всегда, вторые муваются (типо как в расте).
3. Есть Movable и не-Movable типы данных. По умолчанию тип Movable - значит при передаче в качестве аргумента он будет муваться. Если объект не Movable, значит его владение нельзя никуда передавать.
4. Предыдущий пункт нужен чтобы провернуть следующую штуку. Будет встроенный тип Ref (ссылка), который сам Movable, а внутри держит не-Movable тип (ну обычный указатель, хули). Но как вы уже поняли внутрь него нельзя поместить обычный тип так как он Movable. Для того чтобы сделать !Movable тип, можно использовать:
1. Pin, который гарантирует что данные не уйдут со стека.
2. Box, который гарантирует что данные хранятся в динамической памяти и не сдвинутся.
3. Rc.
Ну и может ещё пару умных указателей если понадобятся.
5. Итого как это будет работать: если вам необходимо передать из метода ссылку в другой метод на данные на стеке, вам нужно их припинить. Сам пин это просто маркер, то есть он зиро кост и нужен только для борроу чекера. Затем создаётся ссылка и передается в функцию. Там функция делает чё она хочет с ссылкой как с обычным объектом (как в расте).
6. Если хочется передать ссылку в другой поток то будешь огорчён потому что ссылки не Send, поэтому создавай что-то другое.
7. У меня нет никаких глобальных переменных от слова совсем, так что передать ссылку куда-то так чтобы она стала невалидной невозможно (ну на самом деле не оч так, смотри следующий пункт).

И все вроде заебись (или нет), но я хз чё делать с возвратом ссылки из метода наверх. Как проверить, закончилось время жизни внутренних данных или нет. Вообще зачем я это все придумал - чтобы избавиться от лайфтаймов. Но хз как чекать возвращаемую ссылку без лайфтаймов. Не ну я представляю как это можно сделать, но кмк это сильно удлинит время компиляции из-за проверки всего лайфтайма объекта и ссылок на него.

Оцените по шкале юзабкльности от 1 до 10
Суть в том, что тебе так или иначе, если ты хочешь жить без гц и рц повсюду придется как-то время жизни отслеживать.

От этого никуда не деться
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Суть в том, что тебе так или иначе, если ты хочешь жить без гц и рц повсюду придется как-то время жизни отслеживать.

От этого никуда не деться
Это норм. Я хочу добиться отсутствия этого в пользовательском коде.
источник