Forwarded from XYZ
Twitter-аккаунт Crazy Optical Illusions посвящён, как видно по названию, самым невероятным оптическим иллюзиям.
Но все они объединены интересной особенностью, о которой мы предлагаем вам догадаться самостоятельно.
Но все они объединены интересной особенностью, о которой мы предлагаем вам догадаться самостоятельно.
#prog #rust #rustlib #amazingopensource
lingua-rs — библиотека для распознавания языка, на котором написан текст.
В отличие от аналогов, она даёт большую точность за счёт:
1) статистических моделей с n-gram-ами при n = 5, что позволяет достаточно надёжно классифицировать даже короткие фразы;
2) набора правил, применяемых до применений статистического анализа, которые могут сократить круг потенциальных языков за счёт, например, обнаружения символов, уникальных для специфических языков.
lingua-rs — библиотека для распознавания языка, на котором написан текст.
В отличие от аналогов, она даёт большую точность за счёт:
1) статистических моделей с n-gram-ами при n = 5, что позволяет достаточно надёжно классифицировать даже короткие фразы;
2) набора правил, применяемых до применений статистического анализа, которые могут сократить круг потенциальных языков за счёт, например, обнаружения символов, уникальных для специфических языков.
GitHub
GitHub - pemistahl/lingua-rs: The most accurate natural language detection library for Rust, suitable for short text and mixed…
The most accurate natural language detection library for Rust, suitable for short text and mixed-language text - pemistahl/lingua-rs
Forwarded from Архонт щітпосту | #укртґ
Кстати, остался последний месяц 2020. Предлагаю собрать аптечки, патроны и броню, потому что боссфайт уже близко
#записки
#записки
#prog
А я напоминаю, что в декабре начинается очередной Advent of code. Предлагаю поучаствовать.
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far. Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.
А я напоминаю, что в декабре начинается очередной Advent of code. Предлагаю поучаствовать.
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far. Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.
Ты:
— Я смотрю диффы по merge request, и я бы хотел видеть файлы в порядке важности их изменений. Какой файл должен идти первым?
Gitlab:
— Cargo.lock
— Я смотрю диффы по merge request, и я бы хотел видеть файлы в порядке важности их изменений. Какой файл должен идти первым?
Gitlab:
— Cargo.lock
Forwarded from 🎵Илья проигрывает пианино 🎵
> а что произойдет если выстрелить в ногу?
> давай я тебе, а ты мне (два молодых C++ программиста)
> давай я тебе, а ты мне (два молодых C++ программиста)
#prog #article
Статья о io_uring и BPF и о том, что они могут привнести в процесс разработки под linux.
Статья о io_uring и BPF и о том, что они могут привнести в процесс разработки под linux.
ScyllaDB
How io_uring and eBPF Will Revolutionize Programming in Linux - ScyllaDB
ScyllaDB's Glauber Costa explains how two new APIs, io_uring and eBPF, are changing the fundamental nature of Linux programming.
Forwarded from мне не нравится реальность (вафель 🧇🍓)
Хочу подчеркнуть пару моментов из последнего TWIR:
— allow using generic trait methods in const fn
Этот PR добавляет возможность использовать трейты в
Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое:
В любом случае хорошо что работы в этом направлении ведутся.
— allow Trait inheritance with cycles on associated types
Фиксит старое странное поведение, которое заставляло писать
— allow using generic trait methods in const fn
Этот PR добавляет возможность использовать трейты в
const fn
!Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое:
impl const Add for MyInt {и такое:
fn add(self, other: Self) -> Self {
MyInt(self.0 + other.0)
}
}
const fn triple_add<T: Add<Output=T>>(a: T, b: T, c: T) -> T {Мне кажется что
a + b + c
}
const
требование на весь трейт слишком ограничивает, но впрочем другие варианты не лучше :(В любом случае хорошо что работы в этом направлении ведутся.
— allow Trait inheritance with cycles on associated types
Фиксит старое странное поведение, которое заставляло писать
trait Sub: Super<<Self as Sub>::Assoc> {
type Assoc;
}
вместоtrait Sub: Super<Self::Assoc> {
type Assoc;
}
this-week-in-rust.org
This Week in Rust 367 · This Week in Rust
мне не нравится реальность
Хочу подчеркнуть пару моментов из последнего TWIR: — allow using generic trait methods in const fn Этот PR добавляет возможность использовать трейты в const fn! Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое: …
#prog #rust
Из более приземлённых вещей: наконец-то стабилизировали
Инновации!
Из более приземлённых вещей: наконец-то стабилизировали
pow
(и пачку схожих методов) как const fn.Инновации!
GitHub
stabilize const_int_pow by tspiteri · Pull Request #76829 · rust-lang/rust
This also requires stabilizing constctlz for const ctlz_nonzero.
#prog #rust #article
Статья об опыте оптимизации движка шаблонов для рендеринга документов. nom рулит.
Статья об опыте оптимизации движка шаблонов для рендеринга документов. nom рулит.
NodeBB Development Blog
Optimizing Benchpress
Optimizing Benchpress Recently, I saw the release of nom v6 and decided I wanted to try it out, and see if I could speed up my hobby JS template compiler, BenchpressJS. Background Benchpress is a template compiler and tiny runtime which is focused on two…
#prog #rust #article
Статья о внутреннем устройстве BTreeMap из стандартной библиотеки Rust. Старая, вышла ещё до Rust 1.0, но она даёт хороший обзор принципиального устройства этой структуры данных вкупе с обзором различных трюков для локализации небезопасных операций. Эти трюки применяются и в современной реализации BTreeMap
Статья о внутреннем устройстве BTreeMap из стандартной библиотеки Rust. Старая, вышла ещё до Rust 1.0, но она даёт хороший обзор принципиального устройства этой структуры данных вкупе с обзором различных трюков для локализации небезопасных операций. Эти трюки применяются и в современной реализации BTreeMap
#prog #rust #amazingopensource #article
Рантайм, позволяющий запускать легковесные процессы на WASM и изолировать их падения, а также ограничивать доступный процесcам API операционной системы. Обзорная статья прилагается.
А вы ещё спрашиваете, зачем WASM нужен.
Рантайм, позволяющий запускать легковесные процессы на WASM и изолировать их падения, а также ограничивать доступный процесcам API операционной системы. Обзорная статья прилагается.
А вы ещё спрашиваете, зачем WASM нужен.
GitHub
GitHub - lunatic-solutions/lunatic: Lunatic is an Erlang-inspired runtime for WebAssembly
Lunatic is an Erlang-inspired runtime for WebAssembly - GitHub - lunatic-solutions/lunatic: Lunatic is an Erlang-inspired runtime for WebAssembly
#prog #rust #rustlib #parsing #amazingopensource
Жора Geoffroy Couprie aka Geal в очередной раз переписал nom. На раст. С раста.
Стоило ли оно того? Определённо.
Во-первых, парсер-комбинаторы теперь вместо
Во-вторых, парсер теперь — это не что-то, реализующее
В-третьих, в nom теперь должно быть удобнее пользоваться ошибками. Ошибки из nom теперь реализуют std::error::Error, комбинатор
Я рассказал лишь о наиболее примечательных, на мой взгляд, изменениях в nom, остальное (вроде улучшенного парсинга на уровне битов и повышения качества документации) вы можете сами прочитать в changelog.
Стоило ли оно того? Определённо.
Во-первых, парсер-комбинаторы теперь вместо
impl Fn(...) -> ...
возвращают impl FnMut(...) -> ...
. Функциональность от этого не пострадала, но теперь из них убрано лишнее ограничение. Да, это означает, что теперь можно очень легко написать stateful парсер. Смиритесь с этим.Во-вторых, парсер теперь — это не что-то, реализующее
FnMut(I) -> IResult<O, E>
, а что-то реализующее nom::Parser. Помимо того, что это изменение поменяло ограничения на типы аргументов комбинаторов, оно позволяет теперь некоторые комбинаторы использовать не в качестве свободных функций, а в качестве методов этого трейта. Это сильно влияет на эргономику — теперь можно написать .map(...)
прямо на парсере, а также набирать альтернативные варианты парсинга цепочкой .or(...)
вместо того, чтобы передавать кортеж парсеров в alt. Разумеется, у трейта есть blanket impl для замыканий, так что все старые комбинаторы продолжат работать.В-третьих, в nom теперь должно быть удобнее пользоваться ошибками. Ошибки из nom теперь реализуют std::error::Error, комбинатор
Parser::into
позволяет сделать новый парсер, который применяет From
к результату и ошибке парсера, а к самим ошибкам можно прицепить контекст — к сожалению, на текущий момент это может быть только &'static str
.Я рассказал лишь о наиболее примечательных, на мой взгляд, изменениях в nom, остальное (вроде улучшенного парсинга на уровне битов и повышения качества документации) вы можете сами прочитать в changelog.
GitHub
nom/CHANGELOG.md at main · Geal/nom
Rust parser combinator framework. Contribute to Geal/nom development by creating an account on GitHub.