LINUX.ORG.RU

Релиз Rust 1.30

 


2

6

Что нового:

  • Rust 1.30 расширяет функционал процедурных макросов, добавляя возможность определять атрибутные процедурные макросы и функциональные процедурные макросы.
  • Теперь можно импортировать макросы в область видимости с помощью ключевого слова use.
  • Стабилизирован пакет proc_macro, который дает API, необходимый для написания процедурных макросов. В нем также значительно улучшили API для обработки ошибок, и такие пакеты, как syn и quote уже используют его
  • Два новых улучшения в использовании use: во-первых, внешние пакеты теперь добавляются в prelude, во-вторых, use стал поддерживать импорт элементов в текущую область видимости с путями, которые начинаются на crate.
  • Сырые идентификаторы
  • В Rust 1.30 можно использовать атрибут #[panic_handler] для самостоятельной реализации паники. Теперь можно создавать приложения, а не только библиотеки, которые не используют стандартную библиотеку.
  • В макросах теперь можно сопоставлять модификаторы области видимости, такие как pub, с помощью спецификатора vis.
  • «инструментальные атрибуты», такие как #[rustfmt::skip], теперь стабилизированы.
  • стабилизирован ряд API в стандартной библиотеке
  • В Cargo теперь есть индикатор выполнения

>>> Подробности



Проверено: jollheef ()
Последнее исправление: Deleted (всего исправлений: 1)

Attribute-like macros are similar to custom derive macros, but instead of generating code for only the #[derive] attribute, they allow you to create new, custom attributes of your own. They’re also more flexible: derive only works for structs and enums, but attributes can go on other places, like functions. As an example of using an attribute-like macro, you might have something like this when using a web application framework:

#[route(GET, "/")]
fn index() {

Сокрушительный удар по питону

Crocodoom ★★★★★
()

Function-like macros define macros that look like function calls. For example, an sql! macro:

let sql = sql!(SELECT * FROM posts WHERE id=1); This macro would parse the SQL statement inside of it and check that it’s syntactically correct.

Ещё одна пушка. Кастомные инлайны произвольных языков, интепретирующиеся в компайл-тайме. Растеры, как вам в 3018?

Crocodoom ★★★★★
()
Последнее исправление: Crocodoom (всего исправлений: 1)
Ответ на: комментарий от Crocodoom

Растеры, как вам в 3018?

классы и ООП изобрели в 2018 в раст-е?? окей

missxu
()
Ответ на: комментарий от Crocodoom

В 3018 они будут когда токены выбросят.

Kuzy ★★★
()
Ответ на: комментарий от anonymous

в смысле там прошлогодний раст? а как они жирнолис собирают?

anonymous
()
Ответ на: комментарий от APM

А что это? Трехстраничный мануал, после которого быдлокодеры начнут строчить kloc'и кода на Расте? Не получится так.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

я думаю получится, достаточно внятного перечисления сахара

anonymous
()
Ответ на: комментарий от Crocodoom

Ещё одна пушка. Кастомные инлайны произвольных языков, интепретирующиеся в компайл-тайме

Не интерпретирующиеся а валидирующиеся. В лиспах всю жизнь такое было, как минимум в CL :)

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от loz

В лиспах всю жизнь такое было, как минимум в CL :)

every programming language feature, ever.

Я так понимаю, что у любой фичи и парадигмы есть две даты рождения, например аспектно-ориентированное программирование родилось в 1980 в лиспе и в 2001 для простых смертных.

t184256 ★★★★★
()
Ответ на: комментарий от Crocodoom

Не более чем твой коммент - по здравому смыслу.

t184256 ★★★★★
()

Мне вот интересно. На расте написали десятки фреймворков и ни одной базы данных. Даже key-value не нашел. Почему так? Неужели такая сложная задача? Или никому не нужно?

Deleted
()
Ответ на: комментарий от Deleted

Наверное никому не нужно. Хотя принципе может встраиваемая бд на чистом rust, было бы неплохо. Многие вещи все равно из плюсов берут, например OpenSSL/LibreSSL используются непосредственно, вместо Rust замен

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

встраиваемая бд на чистом rust, было бы неплохо

Очень неплохо для кроссплатформенных приложений. Для ssl хоть какая то замена есть. А с бд вообще голяк

Deleted
()
Ответ на: комментарий от Deleted

Почему так? Неужели такая сложная задача? Или никому не нужно?

оплатят(ггул/моила) тогда будет

решать очередной миллион проблем в объемном мультипотоковом коде, миллион именно новых раст-онли специфичных проблем

...

соц. ленты что я слежу пока дошли до эволюции реализации простых «2д(массивы) алгоритмов» вот одна из последних публикаций https://nical.github.io/posts/rust-2d-graphics-02.html

и в коде по ссылке(который я даже не тестировал) я в слепую без тестов вижу сотни дефолтных проблем решенных тыщу раз в С/С++, и их опять надо решать для раста с его многопоточностью/моделью памяти/функциями/стилем кода

missxu
()
Ответ на: комментарий от Deleted

Ну почему же никому не нужно... Просто не все опенсорсят - это во первых.

Во вторых, так как жаба доказала свою как-бы жизнеподобность в БД, особенно распределенных (Cassandra, HBase), многие считают, что зачем тратить в пять-десять раз больше ресурсов на то, что можно тупо завалить деньгами (среднего размера компании и те могут себе позволить, например, 10 килобаксов в месяц за дополнительные 8-10 серьезных виртуалок в амазоне или ажуре), вместо того, чтобы оптимизировать это при помощи кода.

Вот простой подсчет: у тебя есть кассандра. 9 узлов в ажуре (просто потому, что знаю цены на сегодня). ESv3 - 64 гига памяти и 8 ядер - стоит килобакс в месяц, плюс/минус. Допустим, у тебя запрос начал идти 200 мс, а хочется 100 мс. Решения три:

1. Добавляем в два раза больше машин - 9 килобаксов в месяц

2. Переводим на Сциллу - в 3-5 раз быстрее (судя по слухам) или Роксандру - в 5-7 раз быстрее. Новые проблемы, так как unmanaged code может упасть и так далее.

3. Переписываем на что-нибудь на расте, C++, Го в конце концов. Хороший разработчик, знакомый с написанием баз данных будет стоить 15-18 килобаксов в месяц минимум (это если мы говорим про людей, которые писали SQLServer, Oracle, DB2 и подобное). И это минимум! И надо их таких несколько, и на несколько месяцев. А ты за один день - бац - и еще в полтора раза увеличил скорость. Пока у тебя это не начинает стоить полмиллиона баксов, ты не пойдешь писать свою БД с нуля.

Ну и наконец, если уж тебе совсем нужна производительность и у тебя есть люди, описанные выше, скорее, они знают ЦПП лучше всего и им быстрее и надежней писать на нем.

kantoku
()
Ответ на: комментарий от Deleted

В рамках разработки системы контроля версий pijul вроде накалякали свою недобазу данных. Посмотри, может устроит

khrundel ★★★★
()
Ответ на: комментарий от O02eg

там уже и без меня отправляли, но там у кого-то не собрался, и они этот флаг убрали

Deleted
()
Последнее исправление: Lifun (всего исправлений: 1)
Ответ на: комментарий от Deleted

https://www.sqlite.org/testing.html

Я как вот это прочитал, так очень доверие поднялось к тому чтобы просто ее встраивать. С другой стороны, я кладу статически слинкованые бинарники через musl. Собрать статическую sqlite с musl, лишний тяжёлый шаг

vertexua ★★★★★
()
Ответ на: комментарий от Deleted

Там замена для криптографии, но вроде никто нормально не заворачивал это так, чтобы оно легко встраивалось например hyper, или какой-то другой https клиент или сервер. Например мне в основном для клиента, что может быть не так страшно. Потому что сервер всеравно может останавливать https как-то по другому

vertexua ★★★★★
()
Ответ на: комментарий от Crocodoom

В смысле в раст завезли нормальные атрибуты?

q0tw4 ★★★★
()
Ответ на: комментарий от t184256

Я так понимаю, что у любой фичи и парадигмы есть две даты рождения, например аспектно-ориентированное программирование родилось в 1980 в лиспе и в 2001 для простых смертных.

Да нет никаких «в лиспе», «для простых смертных». Просто ты выбираешь язык который изучаешь, с которым работаешь. Что в нем доступно - то ты и знаешь. А потом видишь на лоре коммент много лет спустя что это крутая штука - видимо кто-то ее только что открыл, ну что поделать :)

loz ★★★★★
()
Ответ на: комментарий от RazrFalcon

У него хранение на диск через фэйсбуковскую бд

Deleted
()
Ответ на: комментарий от vertexua

92 ляма строк тестов впечатляет. Даже не смотря на то, что половина из них возникла из-за опасного языка разработки

Deleted
()
Ответ на: комментарий от Deleted

Я думаю там всякие простые вещи на корректность работы памяти были покрыты сразу. Плюс всякие sanitizers потоков, памяти. В дальше там conformance, всякие тесты на отключение питания

Rust не пуленепробиваем. Я вон получил недавно в Option или None или Some, в зависимости это релиз или дебаг билд. И нежелаемое значение было как раз в релиз билде чтобы нельзя было продебажить. Причину так и не нашли, баг исчез после каких-то перекомпиляции то ли с новым растом то ли после отключения LTO. Возможно это какой-то data race в алгоритме, но не представляю как. И вот вопрос, безопасный язык, покрыт ли так тестами сам, как sqlite. Понятно что лучше раз и навсегда покрыть тестами unsafe внутренности rust, чем потом делать 92 млн строчек тестов в каждом продукте, но все же.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 5)
Ответ на: комментарий от anonymous

Я пеняю на cargo. NixOS пришлось по сути его выкинуть и переизобрести, и виноват именно cargo. А вот ситуация в целом унылая.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Даже сам Будда не может никого отнести в просветление на своих плечах.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.