Forwarded from Generative Anton
Есть забавная традиция называть проекты/библиотеки именами различных мифических существ и божеств. И у меня давно лежала идея хелпера по подбору таких названий, но реализовал только сейчас.
Я напарсил самый большой список названий божеств из 43 пантеонов, что дало 4096 уникальных имён (и 9000 если считать ещё все алиасы). Ну а чтобы избежать коллизий, проект на лету ищет эти имена в названиях репозиториев на Гитхабе и показывает топ-результаты.
Из интересной инженерии: проект на Svelte, чуть позже опубликую сорцы. И внутри есть база на 1Мб сырого json'a, которая затаскивается в общий бандл приложения и ужимается до 150кб. И из-за этого хака всё успешно хостится как статика на Digital Ocean'e за 0.00$ в месяц. Дизайн тоже корявенько делал я. И запросы к Гитхабу — клиентские, лимиты запросов — только клиентские. Легчайшая поддержка.
Из того, что осталось доделать: стили на небольших экранах немного едут, но не критично.
Во славу NJARANA, австралийского бога сна хороших собак.
https://newprojectname.dev
Я напарсил самый большой список названий божеств из 43 пантеонов, что дало 4096 уникальных имён (и 9000 если считать ещё все алиасы). Ну а чтобы избежать коллизий, проект на лету ищет эти имена в названиях репозиториев на Гитхабе и показывает топ-результаты.
Из интересной инженерии: проект на Svelte, чуть позже опубликую сорцы. И внутри есть база на 1Мб сырого json'a, которая затаскивается в общий бандл приложения и ужимается до 150кб. И из-за этого хака всё успешно хостится как статика на Digital Ocean'e за 0.00$ в месяц. Дизайн тоже корявенько делал я. И запросы к Гитхабу — клиентские, лимиты запросов — только клиентские. Легчайшая поддержка.
Из того, что осталось доделать: стили на небольших экранах немного едут, но не критично.
Во славу NJARANA, австралийского бога сна хороших собак.
https://newprojectname.dev
Forwarded from ya mpa 🌲
Proposal #666
Вместо обычных лайфтаймов переменных в расте использовать:
Вместо обычных лайфтаймов переменных в расте использовать:
fn something<á, е́, ó>(ap: &á T, bp: &é T) -> &ó T
#prog #cpp #article
Валидатор (и папир о нём) компиляций, проводимых LLVM, по отношению к многопоточным программам. Поспособствовал выявлению нескольких багов в LLVM.
"We construct a validator that checks whether the transformations performed by LLVM are correct according to the C11 memory model or our inferred LLVM memory model. The validator takes as inputs the programs before and after a set of transformations. It compares them by matching their memory access patterns and reports on whether it could find a matching demonstrating that transformation is correct."
Анализатор, к сожалению, не вполне справляется с циклами и использует для них эвристику, которая может поймать только неправильную компиляцию между первыми двумя итерациями цикла. Это вполне объяснимо, поскольку частью анализа является сопоставление потока исполнения программы до и после трансформаций, а эта задача с введением циклов резко усложняется. Для программ же без циклов проводимый анализ точен и корректен (sound).
Надо отметить, что модель памяти, подразумеваемая LLVM, менее строгая, чем модель памяти C11, поскольку допускает добавление спекулятивных доступов к значениям. В связи с этим валидатор может работать, проверяю корректность трансформаций на основе обоих моделей.
Валидатор (и папир о нём) компиляций, проводимых LLVM, по отношению к многопоточным программам. Поспособствовал выявлению нескольких багов в LLVM.
"We construct a validator that checks whether the transformations performed by LLVM are correct according to the C11 memory model or our inferred LLVM memory model. The validator takes as inputs the programs before and after a set of transformations. It compares them by matching their memory access patterns and reports on whether it could find a matching demonstrating that transformation is correct."
Анализатор, к сожалению, не вполне справляется с циклами и использует для них эвристику, которая может поймать только неправильную компиляцию между первыми двумя итерациями цикла. Это вполне объяснимо, поскольку частью анализа является сопоставление потока исполнения программы до и после трансформаций, а эта задача с введением циклов резко усложняется. Для программ же без циклов проводимый анализ точен и корректен (sound).
Надо отметить, что модель памяти, подразумеваемая LLVM, менее строгая, чем модель памяти C11, поскольку допускает добавление спекулятивных доступов к значениям. В связи с этим валидатор может работать, проверяю корректность трансформаций на основе обоих моделей.
plv.mpi-sws.org
Validating Optimizations of Concurrent C/C++ Programs
#prog #rust #article
Статья (pdf) с эмпирическим изучением связанных с memory safety багов в программах на Rust.
Из примечательного:
Среди багов много категории buffer overflow, причём паттерны схожи с теми, которые допускают при написании программ на C и C++.
Из-за дропов в Rust очень просто сделать ошибку double free, поскольку вызов деструкторов нужно отменять явно. Как оказалось, ManuallyDrop лучше подходит для этого, чем mem::forget.
Статья (pdf) с эмпирическим изучением связанных с memory safety багов в программах на Rust.
Из примечательного:
Среди багов много категории buffer overflow, причём паттерны схожи с теми, которые допускают при написании программ на C и C++.
Из-за дропов в Rust очень просто сделать ошибку double free, поскольку вызов деструкторов нужно отменять явно. Как оказалось, ManuallyDrop лучше подходит для этого, чем mem::forget.
doc.rust-lang.org
ManuallyDrop in std::mem - Rust
A wrapper to inhibit compiler from automatically calling `T`’s destructor. This wrapper is 0-cost.
Forwarded from Random three body problem
This media is not supported in your browser
VIEW IN TELEGRAM
Initial states:
m: 0.991 x: 9.876 y: 8.478 vx: 0.008 vy: 0.023
m: 0.925 x: 7.348 y: -0.973 vx: -0.173 vy: 0.258
m: 0.856 x: 1.261 y: -2.610 vx: -0.005 vy: 0.119
Interest-ness score: 63
m: 0.991 x: 9.876 y: 8.478 vx: 0.008 vy: 0.023
m: 0.925 x: 7.348 y: -0.973 vx: -0.173 vy: 0.258
m: 0.856 x: 1.261 y: -2.610 vx: -0.005 vy: 0.119
Interest-ness score: 63
#prog #rust #abnormalprogramming
Как написать на Rust код, обобщённый относительно мутабельности. Осторожно, nigthly.
github.com/zesterer/mutation
Как написать на Rust код, обобщённый относительно мутабельности. Осторожно, nigthly.
github.com/zesterer/mutation
GitHub
GitHub - zesterer/mutation: Unleash the power of nightly Rust to write code that's generic over mutation!
Unleash the power of nightly Rust to write code that's generic over mutation! - GitHub - zesterer/mutation: Unleash the power of nightly Rust to write code that's generic over mutation!
#prog #rust
Сборник сотни программ на Rust. Собрано из твиттерского треда, так что описания довольно краткие. Но со скриншотами!
Сборник сотни программ на Rust. Собрано из твиттерского треда, так что описания довольно краткие. Но со скриншотами!
www.wezm.net
One Hundred Rust Binaries
I recently completed a #100binaries series on Twitter wherein I shared one
open-source Rust tool or application each day, for one hundred days (Jul—Nov
2020). This post lists binaries 1–50.
See page 2 for binaries 51–100.
open-source Rust tool or application each day, for one hundred days (Jul—Nov
2020). This post lists binaries 1–50.
See page 2 for binaries 51–100.
#prog #python
Минималистичная библиотека для (де)сериализации NamedTuple и датаклассов в/из CSV, использующая аннотации типов для восстановления структуры классов. По умолчанию поддерживает только скалярные типы и их объединения, но можно добавить поддержку своих типов, предоставив словарь из "типов" в пары функций для сериализации и десериализации. Собственно, внутри эта библиотека работает именно так.
Советую глянуть исходники, на удивление понятный и читабельный код.
Минималистичная библиотека для (де)сериализации NamedTuple и датаклассов в/из CSV, использующая аннотации типов для восстановления структуры классов. По умолчанию поддерживает только скалярные типы и их объединения, но можно добавить поддержку своих типов, предоставив словарь из "типов" в пары функций для сериализации и десериализации. Собственно, внутри эта библиотека работает именно так.
Советую глянуть исходники, на удивление понятный и читабельный код.
GitHub
GitHub - derrickturk/antibiotics: the best treatment for acute episodes of PANDAS
the best treatment for acute episodes of PANDAS. Contribute to derrickturk/antibiotics development by creating an account on GitHub.
👍1
#prog #rust #rustlib #amazingopensource
Посмотрите, возможно, это ровно то, что вам надо.
А, ну и, конечно, вафель в очередной раз доказал, что он умница.
Посмотрите, возможно, это ровно то, что вам надо.
А, ну и, конечно, вафель в очередной раз доказал, что он умница.
Forwarded from мне не нравится реальность (вафель 🧇🍓)
У меня тут новый крейт релизнулся: vecrem.
tl;dr: он позволяет быстро высасывать элементы из
tl;dr: он позволяет быстро высасывать элементы из
Vec<_>
(что-то вроде drain_filter
но не совсем)docs.rs
vecrem - Rust
API documentation for the Rust `vecrem` crate.