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
Oleg
Отличная штука 👍
вот этот вот скаловский let _ <- ... меня раздражает
Мерль
https://github.com/tomaka/rouille
Filipp
Симпатичный
Мерль
но запускает по процессу на соединение
Мерль
(
Маjко
Еще один недопиленный микрофреймворк
Мерль
Если верить докам
Маjко
Упрт
Bogdan
https://github.com/tomaka/rouille
Наканецта ещё один фреймворк, так жс победим!
պլհկ
Это старый
Bogdan
Так, а новые есть?
Anonymous
вот новый наверное https://github.com/ubnt-intrepid/susanoo/
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, а не типа который он представляет
Vladimir
парни, а можно как-то из https://docs.serde.rs/syn/enum.Ty.html узнать размер типа?
Вполне возможно что никак, на сколько я понимаю Син работает с синтаксическим деревом, там нет таких понятий как размер типа
Aler
Да, так и есть. я просто создал таблицу стандартных и атрибут для кастомных
分解物質
смотрит на объявления локальных пременных и их размеры
分解物質
в Rust есть один unsized тип — [T], но его размер всегда точно известен в runtime
分解物質
это зависит от реализации, когда как удобнее. я незнаю как в rustc
分解物質
можно, очень просто
分解物質
также как и остальные, только размер не захардкоженый
分解物質
можно, очень просто
но rustc всёравно не разрешает
分解物質
https://doc.rust-lang.org/book/first-edition/unsized-types.html
Амир
Мерль
Интересно, по какому принципу тут отсортированы языки? Вроде как по скорости, но свифт в среднем быстрее джабки, а стоит левее
Tomato
у свифта сверху какая-то непонятная штука. может из-за неё
分解物質
объясните сишнику что такое зависимые типы и зачем они мне нужны пж
分解物質
объясните сишнику что такое зависимые типы и зачем они мне нужны пж
я смотрю тут есть люди которые в этих вещях разбираются
Berkus
dependent types ?
分解物質
да
分解物質
а вообще
Emerald
объясните сишнику что такое зависимые типы и зачем они мне нужны пж
Могу слабо объяснить - можно задавать типы которые верны только если соблюдается какое-то логическое выражение от значений, это позволяет (в теории) большее количество инвариантов программы засунуть в них и быть уверенным (в теории и если тебе тайпчекер вывел эти типы а не завис) что эти инварианты выполняются. Типа тип tuple в котором всегда первый элемент меньше второго.
Emerald
Но я не видел чтобы это на практике применялось и не интересовался
分解物質
ясно
Berkus
можно туториалы по Idris почитать
Berkus
там вроде все разьяснено
Emerald
Почему в мэйнстрим ЯП не включат эти зависимые типы?
Berkus
Почему в мэйнстрим ЯП не включат эти зависимые типы?
хотят, и даже по частям включают, но это не так просто
Berkus
в сях вообще невозможно )
Emerald
в сях вообще невозможно )
Для си есть статические анализаторы
Berkus
эмм, это не то
Emerald
Почему с типчиками так много носятся если в итоге они снижают скорость разработки? 🤔
Emerald
эмм, это не то
Понятно что си это RAM-машина, там сложно
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
Emerald
В наса верифицируют
Danila Matveev
чтобы это верифицировать, касты должны быть выкинуты
Emerald
Верно, там заставляют пруфать что все функции тотальные, завершаются за ограниченное время
分解物質
Coverity сейчас вроде как самый серьёзный
分解物質
https://scan.coverity.com/