Forwarded from flexagoon
Есть Worlde с названиями библиотек в js
Это просто обычный wordle
Потому что на любое слово есть библиотека для js
Это просто обычный wordle
Потому что на любое слово есть библиотека для js
😁10
Молодой динамично развивающийся блокчейн-стартап starter pack:
* "Мы строим будущее"
* претенциозное название, опционально включающее в себя "De" или ".io"
* команда — все, как один, passionate developer with big experience
* сайт — одностраничный лендинг, с отдельными секциями, которые появляются с анимациями при прокрутке
* продукт обязательно простой в использовании, автоматизируемый и работающий между различными чейнами
* в дорожной карте пункт реализации протокола отмечен, как запланированный, но деньги от инвесторов уже есть
* разработка ведётся на Rust поверх Substrate/Solana
* "Если не идёте к нам, то расскажите о нас друзьям, ну пжалста 🥺"
* "Мы строим будущее"
* претенциозное название, опционально включающее в себя "De" или ".io"
* команда — все, как один, passionate developer with big experience
* сайт — одностраничный лендинг, с отдельными секциями, которые появляются с анимациями при прокрутке
* продукт обязательно простой в использовании, автоматизируемый и работающий между различными чейнами
* в дорожной карте пункт реализации протокола отмечен, как запланированный, но деньги от инвесторов уже есть
* разработка ведётся на Rust поверх Substrate/Solana
* "Если не идёте к нам, то расскажите о нас друзьям, ну пжалста 🥺"
❤14🤮10👍3😁3
#prog #rust #article
A Rust match made in hell
Или о крайне неочевидном способе получить ошибку в коде на Rust, против которого пока не ограждают ни компилятор, ни линтер.
A Rust match made in hell
Или о крайне неочевидном способе получить ошибку в коде на Rust, против которого пока не ограждают ни компилятор, ни линтер.
fasterthanli.me
A Rust match made in hell
I often write pieces that showcase how well Rust can work for you, and how it can let you build powerful abstractions, and prevents you from making a bunch of mistakes.
If you read something like S...
If you read something like S...
👎1
Блог*
#prog #rust #amazingopensource diffstatic — инструмент для определения разницы между исходниками, который понимает синтаксис и потому отображает более адекватный дифф (см. пример). (thanks @rustawesome)
#prog #rust #rustlib
Dissimilar: diff library with semantic cleanup
This library is a port of the Diff component of Diff Match Patch to Rust. The diff implementation is based on Myers' diff algorithm but includes some semantic cleanups to increase human readability by factoring out commonalities which are likely to be coincidental.
Dissimilar: diff library with semantic cleanup
This library is a port of the Diff component of Diff Match Patch to Rust. The diff implementation is based on Myers' diff algorithm but includes some semantic cleanups to increase human readability by factoring out commonalities which are likely to be coincidental.
Блог*
#prog #rust Одним из пунктов снижения размера исполняемого файла скомпилированной программы на Rust является обработка бинаря strip. Недавно это стало возможным делать с помощью cargo. Да, это пока nightly, но это значит, что, скорее всего, на stable попадёт…
Окей, это заняло больше времени, чем я ожидал
Заметил, что сложно искать посты с библиотеками для Rust, так что теперь под это дело есть отдельный хештег rustlib
🔥3
#prog #rust
cargo-nextest
Features
* Clean, beautiful user interface. nextest presents its results concisely so you can see which tests passed and failed at a glance.
* Up to 60% faster than cargo test. Nextest uses a state-of-the-art execution model for faster, more reliable test runs.
* Detect flaky tests. Nextest can automatically retry failing tests for you, and if they pass later nextest will mark them as flaky.
* Partition test runs across several CI jobs. If your tests take too long to run in CI, nextest can automatically split them up for you across several jobs.
* Cross-platform. nextest works on Unix, Mac and Windows, so you get the benefits of faster test runs no matter what platform you use.
cargo-nextest
Features
* Clean, beautiful user interface. nextest presents its results concisely so you can see which tests passed and failed at a glance.
* Up to 60% faster than cargo test. Nextest uses a state-of-the-art execution model for faster, more reliable test runs.
* Detect flaky tests. Nextest can automatically retry failing tests for you, and if they pass later nextest will mark them as flaky.
* Partition test runs across several CI jobs. If your tests take too long to run in CI, nextest can automatically split them up for you across several jobs.
* Cross-platform. nextest works on Unix, Mac and Windows, so you get the benefits of faster test runs no matter what platform you use.
🔥2🤔1
Forwarded from RustCon - конференция по языку программирования Rust
Ребята, всем привет!
В эти непростые времена мы решили поддержать сообщество rust-разработчиков и выложить видеозаписи всех докладов с RustCon 2021 раньше, чем обещали. Смотрите их тут, делитесь с друзьями.
Любим вас, до встречи на наших конференциях ❤️
В эти непростые времена мы решили поддержать сообщество rust-разработчиков и выложить видеозаписи всех докладов с RustCon 2021 раньше, чем обещали. Смотрите их тут, делитесь с друзьями.
Любим вас, до встречи на наших конференциях ❤️
YouTube
RustCon 2021
Share your videos with friends, family, and the world
❤22👍3😁2
Forwarded from PLComp (Alexander Chichigin)
https://arxiv.org/pdf/1810.07951.pdf
Don't Unroll Adjoint: Differentiating SSA-form Programs
Michael J Innes, 2019
https://proceedings.neurips.cc/paper/2020/file/9332c513ef44b682e9347822c2e457ac-Paper.pdf
Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients
William S. Moses and Valentin Churavy, NeurIPS 2020
Обе статьи посвящены (обратному aka reverse-mode) автоматическому (или алгоритмическому) дифференцированию функций, представленных в форме Single Static Assignment aka SSA. И тем не менее, они описывают существенно различные подходы.
Первая статья даёт краткое введение в обратное дифференцирование и распространённый подход на основе Wengert Lists. Чтобы перейти к SSA форме, к Wengert Lists необходимо добавить метки, условные и безусловные переходы и фи-узлы (φ nodes). Соответственно, статья вводит правила дифференцирования этих управляющих конструкций (control flow constructs). Дополнительно вводятся правила дифференцирования для чтения и записи в ячейки памяти, поскольку основной прицел статьи — императивные языки (и Julia в особенности). Забавно, что на практике (на текущий момент) основанная на описанном подходе библиотека Zygote не поддерживает деструктивную модификацию массивов, несмотря на её (библиотеки) широкое использование, в особенности во фреймворке для машинного обучения Flux. 😊
Несмотря на использование SSA-формы, первая статья подразумевает сравнительно высокоуровневое представление, близкое к исходному языку, до проведения оптимизаций. Вторая же статья рассматривает внедрение автоматического дифференцирования непосредственно в фреймворк LLVM в виде одного из проходов компиляции, выполняемого над низкоуровневым SSA-представлением, не зависящим от исходного языка и прошедшего ряд оптимизаций. Поэтому основное внимание она уделяет низкоуровневым аспектам: теневой памяти (shadow memory), кешам, обработке указателей, в том числе — вызовам функций по указателю, и переиспользованию информации с других проходов, таких как type-based alias analysis.
Стремление проводить автоматическое дифференцирование настолько низкоуровневого представления продиктовано двумя соображениями. Во-первых, немедленная применимость к большому количеству промышленных языков — C, C++, Rust, Julia — без каких-либо изменений в самом языке. Во-вторых, оптимизация исходного кода может сильно упростить и ускорить порождаемый код расчёта градиента функции, в некоторых случаях — понизить сложность с квадратичной до линейной после применения loop-invariant code motion к исходному коду.
Для подтверждения ускорения, авторы провели замеры производительности и сравнения с традиционными подходами на задачах ADBench от Microsoft и нескольких сторонних реализациях численного решателя дифференциальных уравнений. Результаты и графики приведены в статье. 😊
В любом случае, обе работы полагаются на "классические компиляторные техники", такие как dataflow analysis, alias analysis, abstract interpretation, и оптимизации. И потому представляют собой интереснейшее расширение "поля деятельности компиляторщиков" в сравнительно новую, но стремительно набирающую популярность, область.
Don't Unroll Adjoint: Differentiating SSA-form Programs
Michael J Innes, 2019
https://proceedings.neurips.cc/paper/2020/file/9332c513ef44b682e9347822c2e457ac-Paper.pdf
Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients
William S. Moses and Valentin Churavy, NeurIPS 2020
Обе статьи посвящены (обратному aka reverse-mode) автоматическому (или алгоритмическому) дифференцированию функций, представленных в форме Single Static Assignment aka SSA. И тем не менее, они описывают существенно различные подходы.
Первая статья даёт краткое введение в обратное дифференцирование и распространённый подход на основе Wengert Lists. Чтобы перейти к SSA форме, к Wengert Lists необходимо добавить метки, условные и безусловные переходы и фи-узлы (φ nodes). Соответственно, статья вводит правила дифференцирования этих управляющих конструкций (control flow constructs). Дополнительно вводятся правила дифференцирования для чтения и записи в ячейки памяти, поскольку основной прицел статьи — императивные языки (и Julia в особенности). Забавно, что на практике (на текущий момент) основанная на описанном подходе библиотека Zygote не поддерживает деструктивную модификацию массивов, несмотря на её (библиотеки) широкое использование, в особенности во фреймворке для машинного обучения Flux. 😊
Несмотря на использование SSA-формы, первая статья подразумевает сравнительно высокоуровневое представление, близкое к исходному языку, до проведения оптимизаций. Вторая же статья рассматривает внедрение автоматического дифференцирования непосредственно в фреймворк LLVM в виде одного из проходов компиляции, выполняемого над низкоуровневым SSA-представлением, не зависящим от исходного языка и прошедшего ряд оптимизаций. Поэтому основное внимание она уделяет низкоуровневым аспектам: теневой памяти (shadow memory), кешам, обработке указателей, в том числе — вызовам функций по указателю, и переиспользованию информации с других проходов, таких как type-based alias analysis.
Стремление проводить автоматическое дифференцирование настолько низкоуровневого представления продиктовано двумя соображениями. Во-первых, немедленная применимость к большому количеству промышленных языков — C, C++, Rust, Julia — без каких-либо изменений в самом языке. Во-вторых, оптимизация исходного кода может сильно упростить и ускорить порождаемый код расчёта градиента функции, в некоторых случаях — понизить сложность с квадратичной до линейной после применения loop-invariant code motion к исходному коду.
Для подтверждения ускорения, авторы провели замеры производительности и сравнения с традиционными подходами на задачах ADBench от Microsoft и нескольких сторонних реализациях численного решателя дифференциальных уравнений. Результаты и графики приведены в статье. 😊
В любом случае, обе работы полагаются на "классические компиляторные техники", такие как dataflow analysis, alias analysis, abstract interpretation, и оптимизации. И потому представляют собой интереснейшее расширение "поля деятельности компиляторщиков" в сравнительно новую, но стремительно набирающую популярность, область.
👍6
Дежурное напоминание, что 8 марта — это не праздник весны, красоты и женственности
❤10
Forwarded from мне не нравится реальность
Сегодня 8 марта, буду банален: желаю равных прав, равных зарплат, чтобы вещи и пространства были спроектированы с мыслями о вас, поменьше сексизма и побольше безопасности, побольше сил чтобы бороться с ужасами реальности и поменьше ужасов реальности с которыми нужно бороться. Ну и конечно, хоть это и не относится напрямую к феминизму, желаю чтобы война закончилась, желаю чтобы вы и ваши близкие были в порядке, на столько, на сколько это теперь возможно.
/в общем да, вафель как обычно за всё хорошее против всего плохого/
Хотелось бы верить, что всё это близко, но верится с трудом...
Берегите себя, всего хорошего <3
/в общем да, вафель как обычно за всё хорошее против всего плохого/
Хотелось бы верить, что всё это близко, но верится с трудом...
Берегите себя, всего хорошего <3
❤26