gavr_sas
Уже могу сделать Result, крута Потребовалось реализовать пустые конструкторы без параметров в резолвере типов А вот реализовать unwrap система типов пока не позволяет( Походу нужно вводить Bottom тип: Nothing И надо бы подглядеть как это в остальных яп решают…
Ну вот спустя 6-7 часов кодинга оно работает.
1) я не сразу додумался что если у веток потомков есть дженерик поля, то теже дженерик поля нужно добавлять и в Root, иначе при вызове функций будет невозможно вывести дженерик параметр, а также внутри матчей придется делать касты as T, потому что чертовы дженерики erased в JVM
То есть тут не видно, но и Option и Non это тоже дженерик типы, у Option тоже T что у Some, а вот у None забавное Nothing, что тоже не так уже и очевидно, ведь полей то у него нет.
2) Добавление bottom типа
Тк кк
1) я не сразу додумался что если у веток потомков есть дженерик поля, то теже дженерик поля нужно добавлять и в Root, иначе при вызове функций будет невозможно вывести дженерик параметр, а также внутри матчей придется делать касты as T, потому что чертовы дженерики erased в JVM
То есть тут не видно, но и Option и Non это тоже дженерик типы, у Option тоже T что у Some, а вот у None забавное Nothing, что тоже не так уже и очевидно, ведь полей то у него нет.
2) Добавление bottom типа
Nothing, который является локальным подтипом всех типов, что дает возвращать его из веток switch(все ветки switch должны возвращать один и тот же тип).Тк кк
Nothing в компараторе типов с чем угодно дает true
gavr_sas
Ну вот спустя 6-7 часов кодинга оно работает. 1) я не сразу додумался что если у веток потомков есть дженерик поля, то теже дженерик поля нужно добавлять и в Root, иначе при вызове функций будет невозможно вывести дженерик параметр, а также внутри матчей…
Float pi == 3.14) Потому что я не хочу сначала создавать экземпляр эксепшона, а потом уже отдельным сообщением его throwить, это тупа, так что вот
throwWithMessage вызывается напрямую на Error, а не на экземпляре Error, потому что конструкторPS ну и да, Error, а не Exception, потомушо пишется проще ^_^
gavr_sas
чертовы капиталисты 3) Добавил кастомные Keyword конструкторы типов(раньше были только unary, типа Float pi == 3.14) Потому что я не хочу сначала создавать экземпляр эксепшона, а потом уже отдельным сообщением его throwить, это тупа, так что вот throwWithMessage…
я каждые пять минут во время разработки
💯2👍1😁1
WebAssembly GC is now enabled by default in Stable(!) Chrome!
https://developer.chrome.com/blog/wasmgc/
#wasm
https://developer.chrome.com/blog/wasmgc/
#wasm
Chrome for Developers
WebAssembly Garbage Collection (WasmGC) now enabled by default in Chrome | Blog | Chrome for Developers
There are two types of programming languages: garbage-collected programming languages and programming languages that require manual memory management. With to WebAssembly Garbage Collection, garbage-collected languages can be ported to WebAssembly.
сори, но тг неудобный, скину так
Классные слайды объясняющие зачем в самой спецификации Wasm GC
Классные слайды объясняющие зачем в самой спецификации Wasm GC
Forwarded from gavr
пропосалы которые сильнее всего повлияют на васм перфоманс
симд и треды понятно, тэил позволит юзать корутины, функциональные языки
мемори64 позволит выделять в васме более 4гигов памяти и легче портировать код 64битный
js промисы — вызов асинхронного кода из синхронного без оверхеда, это чисто их V8
симд и треды понятно, тэил позволит юзать корутины, функциональные языки
мемори64 позволит выделять в васме более 4гигов памяти и легче портировать код 64битный
js промисы — вызов асинхронного кода из синхронного без оверхеда, это чисто их V8
Forwarded from gavr
another problem, in the original design of wasm, only the js part has access to web api, and js and wasm has its own isolated memory