gavr_sas
157 subscribers
2.4K photos
162 videos
24 files
728 links
JB пропаганда
Download Telegram
Дока по языку 70тилетней давности, внезапно stack based https://web.archive.org/web/20200404093021/https://members.iinet.net.au/~dgreen/deuce/GEORGEProgrammingManual.pdf

Прям так и вижу как ктото набирал это на печатной машинке в нуаре
👍1
https://ziglang.org/devlog/2025/#2025-06-08
Селфхост бекенд теперь дефолт в дебаг моде в зиге
(то бишь не зависящий на LLVM)

Теперь Zig на Zigе билдица 20 сек вместо 75 ^_^
🔥4
gavr_sas
декабрь 2022, брр вообщем автор jank уволился с работы в EA, шобы уйти фуллтайм в разработку своего языка https://jank-lang.org/blog/2025-01-10-i-quit-my-job/ jank это llvmная кложа, с имеющийся целью полной совместимости, чтобы можно было даже переименовать…
jank новости
https://jank-lang.org/blog/2025-06-06-next-phase-of-interop/
jank - первый лисп с симлесс интеропом с С++ на том же уровне что у Clojure с Java! (один nim засомневался)

jank это попытка сделать производительный нативно бинарно компилящийся лисп синтаксически и семантически являющийся Clojure, уже оч давно в разработке

Сейчас jank проходит 20% тестов clojure.core

Очень люблю кложу, хоть ничего большого так и не писал, чисто идейно нравится(как Smalltalk) и жду jank
🔥1
внимание, я ускорил компиляцию niva файлов в 2 раза убрав проброс input chэнела

спасибо за внимание, gradle мир удивителен, нинавижу
🤯3
https://github.com/AasishPokhrel/shit/issues/1
1000000000ная репа создана каким то зеро html рандомом)
😁3
gavr_sas
Помойму Swift уже реально соперничает с С++ https://github.com/swiftlang/swift-syntax/blob/main/Sources/SwiftSyntax/generated/Keyword.swift#L753 759 - 962, 203 кейворда вполне выучабельно
небольшой кек, Root — как Swift, только отвечает всем требованиям!!!(не готов)

Нашел по упоминанию Smalltalk
Да я переодически просматриваю все репы гитхаба с "Smalltalk language" ^_^

ну почиму не на англе??
https://github.com/i-am-dies/Root-Language
мой друг сделал иконку свояму яп quill
(нет это не коктель! это перо в чернильнице(quill - перо))

https://github.com/schwalbe-t/quill
👍6
type narrowing > pattern matching ??

слева в моем яп общий тип FileSystem просто сужается в ветках до типов против которых матчим

справа полноценный паттерн матчинг с деструктиризацией полей

пример взят отсюда
https://effekt-lang.org/tour/adts

(а еще у меня есть фича декларации общих полей для всех веток ADT (name))
2
опача, новый векторный редактор, пока в основном рисует линии, но зато работает в браузере спасибо Wasm
https://graphite.rs/
https://editor.graphite.rs/
https://github.com/GraphiteEditor/Graphite
кряк
https://oxcaml.org/

Окисленный OCalm — набор расширения(аля расширения хаскель компиля) добавляющий в ML
- более высокоуровневые примитивы для параллелизма
- SIMD примитивы
- unboxed types (стек)
- data-race-free parallelism трекинг использований канкарнет валуёв шоб превентить гонки

- моды похожие на типы, описывают как используются значения, делятся на past и future, моды прошлого трекают предыдущие значения, будущего - возможные использования. можно ли возвращать из функции, передавать между потоками, изменять
примеры
- мод будущего - local - значение нельзя передавать за пределы текущего скопа, global наоборот
юзается для аллокаций на стаке
- мод прошлого uncontended — к значению обращался только один поток rw
shared — значение читали из нескольких потоков r
contended — в значение могут писать другие потоки w

Submoding: значение можно поднимать в более строгие моды но не наоборот (из local в global)
Mode-crossing types: некоторые типы вроде интов не зависят от модов вообще

TLDR - rust для OCaml
Приколы с работы, ну вы токо посмотрите наскоко линь гигачадовый

UPD: а найс, значит лаги были только в реальности, а обсом оно не записалось, на винде при расширении окна было меньше 1 фпс, оно просто телепартировалось(помимо бага который все таки записался)
1
все внимательно тонем в жабе
🔥2🫡1
анг сокращения
idk
iirc
fyi

ру сокращения
хз
ъеъ
Такс внимание, я узнал что эффекты бывают двух видов

tail resumptive
продолжают выполнение только последним экспрешоном, правила такие же как в тэйл рекурсии

умные троли говорят что такие системы неотличимы от тупых трейтов, тк кк по сути им эквивалентны(соглы)

Вот самые простоые примеры
не продолжаем вообще:
def unsafeDiv(a: Double, b: Double): Double / {} =
try {
div(a, b)
} with Exception {
def throw(msg) = {
panic(msg)
}
}

Продолжаем в конце
def tellTime[A] { prog: () => A / tell }: A =
try { prog() }
with tell { () =>
resume(bench::timestamp())
}

или вот еще, продолжения 2, но оба внутри иф елса
def filter[A] { keep: A => Bool } { prog: () => Unit / Yield[A] }: Unit / Yield[A] =
try prog()
with Yield[A] {
def yield(x) = if (keep(x)) { do yield(x); resume(()) } else { resume(()) }
}


multi-shot эффекты
могут продолжаться несколько раз, или в середине
ровно в тысячу раз сложнее в реализации, сначала я даже не мог понять, каким это образом можно продолжить из эффекта код 2 раза
код
код
переменная
x = эффект
код2

handle эффект {
код
resume(1)
код
resume(2)

}


Так вооот, оно блять копирует котинуэйшон, то есть по сути кусок всего кода после эффекта, вместе с текущим стеком, и просто запускает его, в данном случае 2 раза
resume(1) запустит КОПИЮ код2 в кором в стеке x будет равно 1, resume(2) запустит тот же код еще раз, абсолютно изолированно от первого запуска, но с x = 2

а теперь представим что внутри продолжения есть вызовы других эффектов, насколько сложным это все начинает быть с ветвлением
🤓2
gavr_sas
Такс внимание, я узнал что эффекты бывают двух видов tail resumptive продолжают выполнение только последним экспрешоном, правила такие же как в тэйл рекурсии умные троли говорят что такие системы неотличимы от тупых трейтов, тк кк по сути им эквивалентны(соглы)…
то есть, страшно подумать, но вот здесь

val x = choose(1, 2, 3)
val y = choose(4, 5)
println(x + y)

fun handleChoose(choices: List<Int>, k: (Int) -> List<Int>): List<Int> =
choices.flatMap { choice -> k(choice) }


с таким хендлером, запустятся все варианты choose
1 + 4 = 5
1 + 5 = 6
2 + 4 = 6
2 + 5 = 7
3 + 4 = 7
3 + 5 = 8

то есть это уже полиморфизм какого то нереального уровня, мы можем поставить эффект с обычным рандомом, а можем такой который переберет нам все возможные варианты
(чую нужен пост про эффекты в целом)