Anton
Представь, что Option — это коллекция, в которой может быть либо 0, либо 1 элемент)
Sergey
Undefined behavior and unsafe code guidelines
https://www.ralfj.de/blog/2017/07/14/undefined-behavior.html
Tomato
https://users.rust-lang.org/t/cute-python-like-comprehensions/11895
Alex
гадость
Мерль
Мерль
comp-rs/README.md at master · goandylok/comp-rs
https://github.com/goandylok/comp-rs/blob/master/README.md
Мерль
https://github.com/tomaka/rouille
Filipp
Симпатичный
Мерль
но запускает по процессу на соединение
Мерль
(
Маjко
Еще один недопиленный микрофреймворк
Маjко
Мерль
Мерль
Если верить докам
Маjко
Упрт
պլհկ
Это старый
Bogdan
Так, а новые есть?
Anonymous
вот новый наверное https://github.com/ubnt-intrepid/susanoo/
Bogdan
Bogdan
Правда ему уже третья неделя пошла
Bogdan
Мне бы не старше двух недель, а то как-то не круто когда у тебя вебфреймворк на расте месячной давности будет к моменту запила проекта
Bogdan
В коммьюнити не поймут, уважать не будут
Anonymous
господа, а кто-нибудь пользовался IPFS?
может, есть API к нему уже готовый на rust?
Anonymous
ой я с ним играться буду скоро
Anonymous
https://github.com/rschulman/rust-ipfs-api
https://github.com/dignifiedquire/rust-ipfs-api
если погуглить то вот нашел
Anonymous
вот первое я тоже нашел и взгрустнул
Anonymous
потому что автор не собирается продолжать работу
Anonymous
го сами продолжим 😈
Anonymous
в таком случае первый выглядит намного лучше)
Aler
парни, а можно как-то из https://docs.serde.rs/syn/enum.Ty.html узнать размер типа?
Oleg
Это узнает размер самого Ty, а не типа который он представляет
Aler
Да, так и есть. я просто создал таблицу стандартных и атрибут для кастомных
分解物質
смотрит на объявления локальных пременных и их размеры
分解物質
в Rust есть один unsized тип — [T], но его размер всегда точно известен в runtime
分解物質
это зависит от реализации, когда как удобнее. я незнаю как в rustc
分解物質
можно, очень просто
分解物質
также как и остальные, только размер не захардкоженый
分解物質
分解物質
https://doc.rust-lang.org/book/first-edition/unsized-types.html
Амир
Мерль
Интересно, по какому принципу тут отсортированы языки?
Вроде как по скорости, но свифт в среднем быстрее джабки, а стоит левее
Tomato
у свифта сверху какая-то непонятная штука. может из-за неё
Sergey
Anonymous
ivan
分解物質
объясните сишнику что такое зависимые типы и зачем они мне нужны
пж
分解物質
Berkus
dependent types ?
分解物質
да
分解物質
а вообще
Emerald
объясните сишнику что такое зависимые типы и зачем они мне нужны
пж
Могу слабо объяснить - можно задавать типы которые верны только если соблюдается какое-то логическое выражение от значений, это позволяет (в теории) большее количество инвариантов программы засунуть в них и быть уверенным (в теории и если тебе тайпчекер вывел эти типы а не завис) что эти инварианты выполняются. Типа тип tuple в котором всегда первый элемент меньше второго.
Emerald
Но я не видел чтобы это на практике применялось и не интересовался
分解物質
ясно
Berkus
можно туториалы по Idris почитать
Berkus
там вроде все разьяснено
Emerald
Почему в мэйнстрим ЯП не включат эти зависимые типы?
Berkus
в сях вообще невозможно )
Berkus
эмм, это не то
Emerald
Почему с типчиками так много носятся если в итоге они снижают скорость разработки? 🤔
Emerald
Но можно ограничить множество допустимых операций
Danila Matveev
статический анализатор - куча эвристик
теория типов - математика
типы это прежде всего о корректности, чтобы думать о человеках нужны соответствующие метрики и их нет пока
Мерль
Emerald
Danila Matveev
самый примитивный варант с зав типами (на скалке ибо идрис не знаю)
trait T {
type Out
def v: Out
}
def f(t: T): t.Out = {
t.v
}
val t1 = new T{
type Out = Int
override val v: Int = 42
}
val t2 = new T{
type Out = String
override val v: String = "42"
}
f(t1) //42: t1.Out
f(t2) //"42": t2.Out
тип результата зависит от переменной (т.е. возникает связь между переменной с конкретным физическим значением и типом, который существует только в компиляции)
分解物質
в сях вообще невозможно )
ну можно хотябы формально верифицировать
https://wiki.sel4.systems/FrequentlyAskedQuestions#What_does_seL4.27s_formal_verification_mean.3F
Emerald
Си можно тоже моделировать аксиоматически, как RAM-машину у которой осуществляется переход между состояниями s -> s' = f(s) где f это наша программа, а s это вся память, но размерность большая и поэтому не работают практические реализации, приходится сильно упрощать
Emerald
Которые NASA использует https://www.google.com/search?q=nasa+static+c+analysis&oq=nasa+static+c+analysis например coverity
ivan
Emerald
В наса верифицируют
Danila Matveev
чтобы это верифицировать, касты должны быть выкинуты
Emerald
Верно, там заставляют пруфать что все функции тотальные, завершаются за ограниченное время
分解物質
Coverity сейчас вроде как самый серьёзный
分解物質
https://scan.coverity.com/