Самая большая ложь, которую нам внушает мир — это то, что взрослые существуют.
Их нет, есть только выросшие дети.
Их нет, есть только выросшие дети.
❤2
#prog #java #kotlin #scala #article
Well-Typed Programs Can Go Wrong: A Study of Typing-Related Bugs in JVM Compilers
В этой статье авторы отмечают, что усилия в тестировании компиляторов в основном направлены на отлов некорректных оптимизаций, при этом мало кто целенаправленно занимается отловом багов в фронтендах. Авторы выбрали 320 багов, связанных с типами, среди багов компиляторов Java, Scala, Kotlin и Groovy, и разобрались с тем, как они себя проявляют, какие фичи языка используют и как они фиксятся. Вооружившись этим знанием, они написали генератор тестовых программ, который смог найти 28 багов, из них 12 были новыми (то есть для них исправлений не было).
А ещё авторы отличились тем, что нормально выложили материалы по исследованию.
Well-Typed Programs Can Go Wrong: A Study of Typing-Related Bugs in JVM Compilers
В этой статье авторы отмечают, что усилия в тестировании компиляторов в основном направлены на отлов некорректных оптимизаций, при этом мало кто целенаправленно занимается отловом багов в фронтендах. Авторы выбрали 320 багов, связанных с типами, среди багов компиляторов Java, Scala, Kotlin и Groovy, и разобрались с тем, как они себя проявляют, какие фичи языка используют и как они фиксятся. Вооружившись этим знанием, они написали генератор тестовых программ, который смог найти 28 багов, из них 12 были новыми (то есть для них исправлений не было).
А ещё авторы отличились тем, что нормально выложили материалы по исследованию.
www.semanticscholar.org
Well-typed programs can go wrong: a study of typing-related bugs in JVM compilers | Semantic Scholar
This study conducts the first empirical study for understanding and characterizing typing-related compiler bugs, and believes that it opens up a new research direction by driving future researchers to build appropriate methods and techniques for a more holistic…
#prog #rust #article
Stack-safety for free?
TL;DR:
Пока что решение ограничено в том плане, что оно не работает с мутабельными ссылками и взаимно-рекурсивными вызовами, но автор обещает рассказать в будущем о том, как можно обойти эти ограничения.
Также автор отдельно отмечает, что у него было чувство, что он изобрёл велосипед, но он не смог найти prior art для этого.
Stack-safety for free?
TL;DR:
//рекурсивная функция, использующая системный стек⬇️
fn triangular(n: u64) -> u64 {
if n == 0 {
0
} else {
n + triangular(n - 1)
}
}
//использует стек на кучеАвтор этой статьи столкнулся со случаем, когда ему потребовалось переделывать рекурсивное решение на итеративное из-за переполнения стека, и ему не понравилось, что он руками делает то, что вполне мог бы сделать компьютер автоматически. Немного подумав, он смог разработать решение, которое бы использовало генераторы (пока что всё ещё только на nightly) и которое требовало бы для работы достаточно прямолинейную трансформацию, чтобы её можно было сделать процедурными макросами.
fn triangular_safe(n: u64) -> u64 {
trampoline(|n| move |_| {
if n == 0 {
0
} else {
n + yield (n - 1)
}
})(n)
}
Пока что решение ограничено в том плане, что оно не работает с мутабельными ссылками и взаимно-рекурсивными вызовами, но автор обещает рассказать в будущем о том, как можно обойти эти ограничения.
Также автор отдельно отмечает, что у него было чувство, что он изобрёл велосипед, но он не смог найти prior art для этого.
@hurryabit's blog
Stack-safety for free?
I demonstrate how to (ab)use generators to transform any recursive function into an iterative one with nearly zero code changes.
Если вы когда-нибудь почувствуете себя глупым, то вспомните, что я разок опоздал на встречу с человеком из-за того, что перепутал станции Октябрьская и Октябрьское поле.
#rust
9 companies using Rust in production.
О некоторых из них я уже рассказывал, но в любом случае иметь сборник лишним не будет.
9 companies using Rust in production.
О некоторых из них я уже рассказывал, но в любом случае иметь сборник лишним не будет.
9 Companies That Use Rust in Production
Who uses Rust, and what are the benefits of choosing this programming language for your stack? Find out the answer in stories from 9 successful companies.
#prog #rust
Синтаксис для условной компиляции (
Синтаксис для условной компиляции (
#[cfg(...)]
) в Rust позволяет использовать условные выражения, но не в очень эргономичном виде: через all
, any
и not
. Библиотека efg позволяет использовать более привычный синтаксис, похожий на то, что пишут в коде на самом Rust. Пример:#[efg(feature "proc-macro" && !(target_arch "wasm32" && target_os "unknown"))]
extern crate proc_macro;
Кстати, написана Толяном.