1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #julia #article

Why I no longer recommend Julia (перевод)

My conclusion after using Julia for many years is that there are too many correctness and composability bugs throughout the ecosystem to justify using it in just about any context where correctness matters.

In my experience, Julia and its packages have the highest rate of serious correctness bugs of any programming system I’ve used, and I started programming with Visual Basic 6 in the mid-2000s.
Forwarded from Сова пишет…
Причина, почему ZigLang сразу летит в помойку
👎13👍3
Сова пишет…
Причина, почему ZigLang сразу летит в помойку
Далее в комментариях Серёжа ещё возмущается
🤯1
Forwarded from я что-то �� и всё ����
12🔥1
Forwarded from AlexTCH
Writing portable code is hard: https://www.chemistryworld.com/news/structures-in-more-than-150-papers-may-be-wrong-thanks-to-nmr-coding-glitch/4010413.article
The error is the result of a simple file sorting problem. On operating systems without default file name sorting, the script fails to match the files containing a conformer’s free energy with its chemical shift – leading to an overall wrong value.

Which meant the script worked fine on Windows while producing incorrect results on GNU/Linux. This jeopardizes some 150 chemistry papers.
😁3😢3
Forwarded from Курьерка 🚘
😁8🥰21
Forwarded from Санечка Ъысь
👍91
#prog #rust #rustreleasenotes

Вышла новая версия Rust 1.61.0! Как всегда, я ограничусь только интересным мне, за остальным смотрите полные записи о релизе.

▪️Заметно расширены возможности const fn. Теперь в них можно, загибайте пальцы:

* создавать, передавать и кастовать fn-указатели, а также трейт-объекты;
* принимать и возвращать impl Trait;
* иметь ограничения в виде трейтов на типы в обобщённых const fn.

При всём этом вызывать методы трейтов всё ещё нельзя. Тем не менее, даже это весьма полезно, ибо в const fn теперь можно использовать ассоциированные типы и константы. В частности, в моём коде к статье "Как написать Fizzbuzz на собеседовании" (кстати, если вы её вдруг ещё не прочитали — рекомендую) теперь можно написать так:

const fn to_str_by_type<T: NumericValue, const N: usize>() -> Str<{ N }> {
to_str(T::VALUE)
}

И, соответственно, реализацию AsStr написать немного иначе:

impl<T, const N: usize> AsStr<{ N }> for T
where
T: NumericValue,
{
const VALUE: Str<{ N }> = to_str_by_type::<Self, { N }>();
}

(опустить значение константы, к сожалению, нельзя). Разумеется, с подобным инструментарием можно сделать и что-то более интересное, но более интересных примеров у меня нету.

А, и ещё целую пачку методов на сырых указателях теперь можно применить и в const-контексте.

▪️Функция с impl Trait в возвращаемом типе теперь может быть рекурсивной, и внутри неё возвращаемый тип не будет непрозрачным (на самом деле это скорее побочный эффект сложного изменения, смотри PR)

▪️С версии Rust 1.26.0 main может возвращать также Result<(), E: Debug>, при этом на ошибке она выводилась в stderr при помощи форматирования Debug, и это поведение не подлежало кастомизации. Теперь же его можно настроить при помощи реализации трейта Termination для некоего своего типа — main теперь должен возвращать значение некоторого типа, реализующего этот трейт.

▪️{Stdin, Stdout, Stderr}::lock теперь возвращают соответствующие guard-ы, параметризованные не временем жизни ссылки на self, а 'static. Это безопасно, поскольку значения этих типов являются доступом к глобальным ресурсам. Данное изменение наконец позволяет писать просто:

let mut stdin = std::io::stdin().lock();

вместо

let stdin = std::io::stdin();
let mut stdin = stdin.lock();

▪️Вы когда-нибудь хотели удалить из вектора все элементы, удовлетворяющие некоторому предикату, но при этом модифицировать оставшиеся? Новодобавленные Vec::retain_mut (а также VecDeque::retain_mut) к вашим услугам.

▪️ManuallyDrop<T> всегда должен был иметь такое же представление в памяти, как и T. Теперь это прописали явно в документации.

▪️Наконец-то пофиксили более чем годовой старости баг с недостаточными проверками ограничений на ассоциированные типы в трейт-объектах, который позволял сделать свой transmute в safe коде.

▪️Предикаты для all и any внутри cfg теперь всегда вычисляются полностью, а не лениво. Это позволяет раньше ловить ошибки с ошибочной условной компиляцией.

▪️Число хешей для ограничений сырых строковых литералов снизили с щедрых 65535 (u16::MAX) до абсолютно зверских 255. Кошмар! </sarcasm>

На этом всё, всё остальное по ссылке.
👍7🔥1
👏26🤬61👍1😁1
Кресты на моей кукухе
Photo
На LinkedIn, кстати, та же фигня. Ещё и Ruby зачем-то подсовывает
#prog #rust #article

Rust: A Critical Retrospective

Still, after spending a couple years in the foxhole with Rust and reading countless glowing articles about the language, I felt like maybe a post that shared some critical perspectives about the language would be a refreshing change of pace.
5👍1
Forwarded from Life of Tau
программирование на расте - боль
программирование на крестах - страдания
я мазохистка и предпочитаю боль
👎5👍3