Forwarded from Random Rust Dev
  
Хотите научиться дефайнить числовые константы как эксперты уровня писателей стандартных либ?
Учитесь вот.
Учитесь вот.
🌚7
  YouTube умудрился пробить очередное дно.
Для многих видео YouTube умеет автоматически генерировать субтитры на английском. С 2020 года эта фича заменяет слова вроде fuck и shit на "[___]". С 2022 года это можно отключить... Но только на стороне канала, не на стороне клиента. И по умолчанию "исправление" включено.
Так вот. Кажется, теперь YouTube проводит подобную замену и на сделанных вручную субтитрах.
Для многих видео YouTube умеет автоматически генерировать субтитры на английском. С 2020 года эта фича заменяет слова вроде fuck и shit на "[___]". С 2022 года это можно отключить... Но только на стороне канала, не на стороне клиента. И по умолчанию "исправление" включено.
Так вот. Кажется, теперь YouTube проводит подобную замену и на сделанных вручную субтитрах.
🤡20🖕7🤨4🤬1🤮1
  PSA: если вы копируете ссылку из приложения YouTube, то к ней в конце прибавляется query parameter 
si. То есть ссылка выглядит, как youtu.be/random_video_id?si=some_random_part. Так вот, ?si и всё, что идёт далее — это уникальное значение, которое необходимо лишь для того, чтобы отследить, что это конкретно вы скопировали эту ссылку, и понять, кто привёл очередного зрителя по клику по ссылке. Она нужна исключительно для YouTube. Это можно удалить без влияния на работоспособность ссылки. Так что, пожалуйста, ДЕЛАЙТЕ ЭТО.💯35🤝15❤🔥6👍5🌚3💩2
  Forwarded from ИА Панорама
Преподаватель МФТИ получил огнестрельное ранение в ногу во время лекции о безопасном программировании на С++
Текст: Эрвин Кляйн
  
  Текст: Эрвин Кляйн
ИА Панорама
  
  Преподаватель МФТИ получил огнестрельное ранение в ногу во время лекции о безопасном программировании на С++
  Руководство Московского физико-технического института проводит служебную проверку по факту получения производственной травмы 44-летним доцентом кафедры информац...
😁20👍17🌚6🤯3🔥2
  
  Блог*
#prog  В кодогенераторе cranelift (который, помимо всего прочего, планируют использовать как бекенд rustc для отладочных билдов) для аллокации регистров используется библиотека regalloc2. В репозитории есть занятный документ — обзор дизайна regalloc2, включающий…
#prog #article
В статье The Solid-State Register Allocator автор описывает свой дизайн аллокатора регистров (который впоследствии оказался тем же, который используется в LuaJIT).
Все аллокаторы регистров требуют для работы информации о том, какие регистры используются в каждый конкретный момент времени — то есть то, что называется liveness ranges. Обычно у аллокаторов регистров это отдельный шаг перед работой собственно аллокатора. Анализ, требуемый для построения liveness ranges, обрабатывает программу от конца к началу (как и многие dataflow алгоритмы). Ключевая идея нового аллокатора состоит в том, чтобы также обрабатывать программу от конца к началу и вместо требования наличия liveness ranges вычислять их на лету. Замеры показали, что этот аллокатор регистров очень быстр (на пару порядков быстрее clang и GCC) и при этом лучше их утилизирует большое количество физических регистров.
Несмотря на впечатляющие характеристики, у Solid state register allocator есть весьма существенный недостаток: он работает только на программах с линейный исполнением, без условных переходов и прыжков. Demilade Sonuga решил написать свой вариант реализации, который поддерживал бы более сложный поток управления, и использовать его как один из вариантов аллокатора регистров в Cranelift. Свой прогресс автор описал в статье regalloc I (фактически анонс) и regalloc II (которая описывает новый вариант алгоритма, работающий на уровне взаимосвязанных базовых блоков). Его работа в итоге привела к PR в Cranelift, который был принят.
В regalloc III автор описывает замеры производительности нового аллокатора. TL;DR: компиляция в WASM быстрее (в некоторых случаях аж в пять раз), но производительность скомпилированного кода в разы хуже. Второе, впрочем, является следствием довольно наивного подхода в реализации (в частности, обработки условных ветвлений), который приводит к избыточному перемещению между регистрами и слотами стека, и впоследствие, скорее всего, может быть улучшено.
  
  В статье The Solid-State Register Allocator автор описывает свой дизайн аллокатора регистров (который впоследствии оказался тем же, который используется в LuaJIT).
Все аллокаторы регистров требуют для работы информации о том, какие регистры используются в каждый конкретный момент времени — то есть то, что называется liveness ranges. Обычно у аллокаторов регистров это отдельный шаг перед работой собственно аллокатора. Анализ, требуемый для построения liveness ranges, обрабатывает программу от конца к началу (как и многие dataflow алгоритмы). Ключевая идея нового аллокатора состоит в том, чтобы также обрабатывать программу от конца к началу и вместо требования наличия liveness ranges вычислять их на лету. Замеры показали, что этот аллокатор регистров очень быстр (на пару порядков быстрее clang и GCC) и при этом лучше их утилизирует большое количество физических регистров.
Несмотря на впечатляющие характеристики, у Solid state register allocator есть весьма существенный недостаток: он работает только на программах с линейный исполнением, без условных переходов и прыжков. Demilade Sonuga решил написать свой вариант реализации, который поддерживал бы более сложный поток управления, и использовать его как один из вариантов аллокатора регистров в Cranelift. Свой прогресс автор описал в статье regalloc I (фактически анонс) и regalloc II (которая описывает новый вариант алгоритма, работающий на уровне взаимосвязанных базовых блоков). Его работа в итоге привела к PR в Cranelift, который был принят.
В regalloc III автор описывает замеры производительности нового аллокатора. TL;DR: компиляция в WASM быстрее (в некоторых случаях аж в пять раз), но производительность скомпилированного кода в разы хуже. Второе, впрочем, является следствием довольно наивного подхода в реализации (в частности, обработки условных ветвлений), который приводит к избыточному перемещению между регистрами и слотами стека, и впоследствие, скорее всего, может быть улучшено.
GitHub
  
  Fastalloc1 by d-sonuga · Pull Request #181 · bytecodealliance/regalloc2
  This is the initial implementation of the fast register allocator in src/fastalloc.
It's still a work in progress and I haven't done any kind of optimizations on it. Still using les...
It's still a work in progress and I haven't done any kind of optimizations on it. Still using les...
❤7😐1
  🤮10🍌8😁1
  
  Блог*
А это значит, что в ближайшем будущем mpmc-канал наверняка будет и в std!
#prog #rust хайлайты
Я был несколько оптимистичен, но в итоге mpmc в std быть!
https://github.com/rust-lang/rust/pull/126839
  
  Я был несколько оптимистичен, но в итоге mpmc в std быть!
https://github.com/rust-lang/rust/pull/126839
GitHub
  
  Add multi-producer, multi-consumer channel (mpmc) by obeis · Pull Request #126839 · rust-lang/rust
  Closes #125712
Tracking issue: #126840
r? m-ou-se
Tracking issue: #126840
r? m-ou-se
🔥7🎉2❤1
  Forwarded from Кустарный мыслепоток (Konstantin Redkin)
И снова про контору.
Доставка в мой дом - 335 рублей
Доставка в дом, что соприкасается с моим, стоит прям рядом - 135 рублей
Олимпиадники играли в алгоритмы и проиграли.
Доставка в мой дом - 335 рублей
Доставка в дом, что соприкасается с моим, стоит прям рядом - 135 рублей
Олимпиадники играли в алгоритмы и проиграли.
🤡17👍6😁4
  #prog #rust хайлайты
Умудрился пропустить в своё время очень важное изменение, влитое в сентябре:
Stabilize &mut (and *mut) as well as &Cell (and *const Cell) in const
Изменение, которое значительно повышает возможности для кода в const-контексте. Судя по milestone, до стейбла дойдёт в версии 1.83
  
  Умудрился пропустить в своё время очень важное изменение, влитое в сентябре:
Stabilize &mut (and *mut) as well as &Cell (and *const Cell) in const
Изменение, которое значительно повышает возможности для кода в const-контексте. Судя по milestone, до стейбла дойдёт в версии 1.83
GitHub
  
  Stabilize `&mut` (and `*mut`) as well as `&Cell` (and `*const Cell`) in const by RalfJung · Pull Request #129195 · rust-lang/rust
  This stabilizes const_mut_refs and const_refs_to_cell. That allows a bunch of new things in const contexts:
Mentioning &mut types
Creating &mut and *mut values
Creating &T ...
Mentioning &mut types
Creating &mut and *mut values
Creating &T ...
👍11
  Forwarded from Кустарный мыслепоток (Konstantin Redkin)
  
Linux, linux.. зацени че у меня винда умеет
🔥27🤣15😁3
  Forwarded from Install Wizard
Год программирования на расте и непрограммирования на плюсах меня испортил. Я начал считать, что программирование - это что-то хорошее
😁37🤔12
  #prog #cpp #python
Что общего у C++ и Python?
Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
  
  Что общего у C++ и Python?
Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
Stack Overflow
  
  Structured binding in lambda arguments
  Why I cannot use C++17 structured binding in this case?
std::map<int, int> m;
std::find_if( m.cbegin(), m.cend(), []( const auto & [x, y] ){ return x == y; } );
std::map<int, int> m;
std::find_if( m.cbegin(), m.cend(), []( const auto & [x, y] ){ return x == y; } );
🌚11👌4
  
  Блог*
#prog #cpp #python  Что общего у C++ и Python?  Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
#prog #python
Причём в Python 2.x можно было писать код вида
, а в Python 3 это убрали после PEP 3113, причём по причинам, которые, на мой взгляд, можно было бы и исправить.
  
  Причём в Python 2.x можно было писать код вида
lambda (x, y): (y, x)
, а в Python 3 это убрали после PEP 3113, причём по причинам, которые, на мой взгляд, можно было бы и исправить.
Python Enhancement Proposals (PEPs)
  
  PEP 3113 – Removal of Tuple Parameter Unpacking | peps.python.org
  Tuple parameter unpacking is the use of a tuple as a parameter in a function signature so as to have a sequence argument automatically unpacked.  An example is:
🤡8🤮2😢1🤣1