Pull to refresh
86
1
Влад @lorc

Embedded разработчик

Send message

"Обмен сообщениями" в терминологии тех годов - это то что мы сейчас называем "вызов метода".

В 1960-х никто и не слышал о микросервисах, оркестраторах, асинхронных очередях сообщений, service mesh и другой чертовщине.

Ну то что в C++ нет отдельного понятия "интерфейс" - это проблема C++, а не ООП.

Только не DOOM, а Doom, ну еще Doom 2.

DOOM (который 2016) запустить не выйдет.

Нужен одноразовый саморазогревающийся чайник.

Ну заводы все же обычно занимаются серийным производством. Для изготовления одной уникальной детали конечно же никто не будет писать программу для ЧПУ. Если её в принципе можно изготовить на станках с ручным управлением, конечно. А то некоторые современные инженеры, видевшие токарный только на картинках, такого могут напроектировать...

Напоминаю с чего все началось:

Надо бы вспомнить, что сумма любых синусоид -всегда синусоида.

Так вот, нет, сумма любых двух синусоид - не синусоида. Я выше привел примеры.

Да, любой периодический сигнал можно разложить на сумму синусоид. Это называется "дискретное косинусное преобразование". Но исходный сигнал от этого синусоидой не станет.

Забавно, не ожидал таких результатов. 4 из 6, в остальных двух выбрал 320.

Наушники и USB DAC. Плюс постоянные наводки из-за работающего солнечного инвертора. Я не ожидал что смогу отличить WAV от MP3-320. Аж удивительно. Но на самом деле это ни на что не повлияет. Я все равно буду слушать пережатую музыку в Spotify/Google Music. Не в нюансах звучания щастье.

Оставим это на совести авторов rustfmt.

Я бы конечно мог сказать, что пока либа делает такую фигню только у себя в потрохах, то это внутренние проблемы либы. Но не буду я так говорить, ибо это уже goalpost moving.

А что, в C++ по-другому разве? Move constructor точно так же копирует все данные из одного объекта в другой.

catch_unwind не только существует, но к нему еще и существуют правила его использования. И основная его цель - это недопустить пролет растовской паники за пределы FFI. Это не замена try/catch. Документация явно об этом говорит.

Потому что нет Rust ABI. Нет его. Есть стандартный системный ABI который описывает как вызывать функции и как возвращать значения.

Что вы вообще так уцепились за эти исключения? Я говорил о том что С++ ABI не существует и в качестве одного примера сказал что нельзя бросаться исключениями.

Напоминаю, что все началось с вот этого комментария:

На C++ (как и на C) можно написать библиотеку и использовать её в десятках других ЯП. Rust так умеет?)

На что я совершенно резонно заметил что никакого С++ ABI нет. Все равно на стыках надо реализовывать всем понятный C-style ABI и соответственно никаких преимуществ у C++ перед C, Rust или там Fortran нет.

На всякий случай - я знаю что сейчас это невозможно/затруднено. Но если бы это был гипотетический unsafe javascript с возможностью гулять по всей памяти процесса - то было бы как я написал.

Не просто так. Они еще и написали когда это стоит использовать, а когда - не стоит. Но кто ж читает документацию, правда?

It is currently undefined behavior to unwind from Rust code into foreign code, so this function is particularly useful when Rust is called from another language (normally C). This can run arbitrary Rust code, capturing a panic and allowing a graceful handling of the error.

It is not recommended to use this function for a general try/catch mechanism. The Result type is more appropriate to use for functions that can fail on a regular basis. Additionally, this function is not guaranteed to catch all panics, see the “Notes” section below.

Если код в Rust кидает панику, значит он обнаружил где-то нарушение инварианта и состояние программы больше не консистентно. Ловить панику чтобы потом продолжить работу - не имеет смысла.

Паника, это такой assert(false) на стероидах. Соответственно и дергать ее надо когда вы, как программист, обнаружили нарушенный инвариант.

Ага, копайте дальше, в микроархитектуру процессора. Вы бы видели какие костыли городили в разных компонентах, начиная с ядра линукса и заканчивая прошивками чтобы митигировать Spectre и его друзей.

Ну это да. Помнится, в виндах тоже было что-то такое, хоть и менее навороченное. Но оно никак не мапится в собственно язык. Обычным try/catch такое не поймаешь, насколько я знаю. Разве что runtime library будет ловить вот такое системное исключение, заворачивать в соответствующий класс и бросать уже как исключение языка.

И давно у С++ появилось стабильное ABI? Где бы об этом почитать?

Мне вот сильно интересно как поймать в Java исключение выброшенное из С++ либы.

Ну да, просто джаваскрипт от очередной веб-статискики/банера/etc сдампит ваши куки/вводимые пароли/номера карточек. Ничего страшного.

Information

Rating
1,216-th
Location
Украина
Date of birth
Registered
Activity