- PVSM.RU - https://www.pvsm.ru -

Rust новости #4 (декабрь 2018)

Поскольку праздники кончились, предлагаю вашему вниманию субъективную подборку ржавых новостей за декабрь. В этой подборке: безумие с растом, страшен ли раст, волна пророчеств, Rust 2018, Rust Analyzer.

КДПВ

Rust 1.31 & Rust 2018 [1]

Самое важное событие декабря — выпуск Rust 1.31 и Rust 2018 [1], конечно. Туда очень много всего вошло:

редакция 2018, нелексические времена жизни, изменения системы модулей, дополнительные правила вывода времен жизни, const fn, новые инструменты, инструментальные проверки качества кода, документация, новый веб-сайт, улучшения в cargo.

Изменений так много, что обзор всех не получилось запихнуть в один пост, так что через несколько дней были опубликованы вспомогательные заметки:

Так же, имеет смысл полистать мозиловский хорошо структурированный обзор/ликбез 2018й редакции языка: Rust 2018 is here… but what is it? [6] (перевод [7], обсуждение [8]).

Волна постов про планы на 2019й год

Был кинут официальный запрос сообществу делиться мнениями о 2019м годе — A call for Rust 2019 Roadmap blog posts [9] (обсуждение [10]). В ответ последовала волна из более чем сотни статей (со всеми можно ознакомиться на readrust.net/rust-2019 [11]). Вот несколько интересных ответов:

RustRush 2018

rustrush logo

15-16 декабря в Москве проходил RustRush 2018 [21].

Записи докладов будут постепенно опубликованы на Youtube канале [22], пока доступны два:

Так же, Pierre Chevalier [25] выложил отчет о поездке [26].

Генерация типаж-объектов на лету (или безумие с Rust) [27]

idubrov [28] написал занятную статью о низкоуровневых хаках с лютым unsafe'ом. Отличный эксперимент в целях обучения, но, надеюсь, в реальные проекты оно все-таки не пойдет.

Так ли страшен Rust, как его малюют [29]

опасность

PsyHaSTe [30] борется с восприятием ржавчины исключительно как системного языка.

Rust Analyzer in 2018 and 2019 [31]

Леша matklad [32] поделился информацией о ходе проекта rust-analyzer [33], который является альтернативой RLS [34] (обсуждение [35]).
Важное дело, учитывая что IDE это очень болезненная тема для раста.

Игрострой [36]

gamedev wg

  • A simple agenda for the Rust Game Development WG [37] (обсуждение [38]) — Эрланд предлагает создать Игровую Рабочую Группу и сконцентрироваться вокруг Аметиста, сделав его локомотивом экосистемы;
  • Выпущена паззл игра "Adventures of Pascal Penguin" [39] (обсуждение [40], трейлер [41]) — работает в вебе, играбельна по ссылке;
  • Using Rust for Gamedev [42] (обсуждение [43]) — автор вышеупомянутого пингвина рассказывает о своем опыте работы над ним;
  • Russian AI Cup 2018 [44] — в этом году мэйлрушный Russian AI Cup использует симулятор на Rust+WASM (GIF [45]) (кстати, прошлогодний пост [46] тоже очень интересный) ;
  • Sandspiel [47] (обсуждение [48]) — залипательная физическая WASM песочница;
  • Published my first game written in Rust: Energy Grid [49] (обсуждение [50]) — экономическая стратегия;
  • Dose Response [51] (код [52], обсуждение [53]) — небольшой наркоманский рогалик с ASCII графикой, проходится минут за пять-десять, доступна веб версия [54];
  • This year in gfx-rs: 2018 [55] (обсуждение [56]) — краткий обзор случившегося с проектом gfx от kvark [57];
  • кстати, пакет gfx-hal выложен на crates.io [58] (обсуждение [59]) — кажется, переработка gfx проекта потихоньку устаканивается и поверх новой версии может начинать расти экосистема;
  • nitric [60] (обсуждение [61]) — наследник/переработка specs [62] для возвращения техдолга разросшегося проекта и повышения его гибкости;
  • 17cupsofcoffee/tetra [63] (обсуждение [64]) — еще одна попытка написать простой ржавый 2д движок, более высокоуровневый чем ggez;
  • Вышел Amethyst 0.10 [65] (обсуждение [66]): Rust 2018, переход на nalgebra, упрощение тестирования и много более мелких изменений;
  • This month in rustsim #3 (December 2018) [67]:
    • nphysics: Добавлены дешевые фиксированные точки для деформируемых тел: видео [68];
    • nphysics: Добавлена поддержка соединений для мультител, что дает возможность прикреплять другие тела к деформируемому телу: видео [69];
    • ncollide: добавлена поддержка капсул и карт высот: видео [70];
    • nalgebra: переработано индексирование матриц, что позволяет удобнее получать срезы [71];
    • nalgebra-glm: добавлены ортографические и перспективные проекции;
    • цели на следующий год: интеграция с аметистом, поддержка жидкостей, "непрерывное" обнаружение столкновений, улучшение производительности;

Одной строкой

По васму и встройке в декабре заметной активности было мало, поэтому отдельных секций у них не будет.

Новые и обновленные пакеты

  • 'cargo-crev' and Rust 2019 fearless code reuse [116] (обсуждение [117], код [118]) — платформа для публичного ревью пакетов (демо скринкаст [119]);
  • enum_dispatch [120] (обсуждение [121]) — макрос, помогающий в некоторых ситуациях удобно заменить типаж-объекты на перечисления (пробрасывает вызов функции кажому из вариантов перечисления);
  • structview [122] (обсуждение [123]) — позволяет безопасно получить представление бинарных данных в виде высокоуровневых структур;
  • cargo-call-stack [124] (твит [125]) — Japaric опубликовал расширение cargo для статического анализа стека вызовов;
  • swc [126] (обсуждение [127]) — очень быстрая альтернатива babel [128];
  • ds_store [129] (обсуждение [130]) — парсер .DS_Store файлов;
  • sd [131] (обсуждение [132]) — "s[earch] & d[isplace]", ржавая альтернатива sed с более интуитивным интерфейсом;
  • enigma [133] (обсуждение [134]) — игрушечная реализация виртуальной машины Erlang'а;
  • http_static [135] (обсуждение [136]) — простой статический веб сервер, использует tower-web [137];
  • ws-unix-framed-bridge [138] (обсуждение [139]) — перенаправляет сообщения из вебсокетов в юникс-сокеты и наоборот;
  • Exonum 0.10 [140] — фреймворк для построения приватных блокчейнов сменил свою сериализацию на protobuf, изменил формат сообщений, а биткоин анкоринг теперь использует segwit [141];
  • Rocket v0.4 [142] (обсуждение [143]) — веб фреймворк получил типизированные URI, поддержку БД и переработанные запросы;
  • resvg 0.4 [144] (обсуждение [145]) — библиотека отрисовки svg файлов получила начальную поддержку фильтров, накладывающихся масок/clippath, условного рендеринга и много чего еще;
  • Tantivy 0.8 [146] (обсуждение [147]) — в библиотеке полнотекстового поиска был переработан апи коллекций и улучшена поддержка многопоточности;


Особо интересных RFC под конец года мной не было замечено, так что это все на сегодня, спасибо за внимание!

Если я не добавил какую-то важную ссылку или событие, смело закидывайте в комментарии. :)

(КДПВ взята отсюда [148], остальные картинки из сайтов соответствующих проектов.)

Автор: ozkriff

Источник [149]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/304786

Ссылки в тексте:

[1] Rust 1.31 & Rust 2018: https://habr.com/post/432640

[2] Procedural Macros in Rust 2018: https://blog.rust-lang.org/2018/12/21/Procedural-Macros-in-Rust-2018.html

[3] обсуждение: https://www.reddit.com/r/rust/comments/a8chzq/procedural_macros_in_rust_2018/

[4] Tools in the 2018 edition: https://blog.rust-lang.org/2018/12/17/Rust-2018-dev-tools.html

[5] обсуждение: https://www.reddit.com/r/rust/comments/a72mn0/tools_in_the_2018_edition/

[6] Rust 2018 is here… but what is it?: https://hacks.mozilla.org/2018/12/rust-2018-is-here

[7] перевод: https://habr.com/post/432564

[8] обсуждение: https://www.reddit.com/r/rust/comments/a3phk7/rust_2018_is_here_but_what_is_it

[9] A call for Rust 2019 Roadmap blog posts: https://blog.rust-lang.org/2018/12/06/call-for-rust-2019-roadmap-blogposts.html

[10] обсуждение: https://www.reddit.com/r/rust/comments/a3q7h4/a_call_for_rust_2019_roadmap_blog_posts_is_here

[11] readrust.net/rust-2019: https://readrust.net/rust-2019

[12] "Rust 2019: Organizational Debt": https://boats.gitlab.io/blog/post/rust-2019/

[13] обсуждение: https://www.reddit.com/r/rust/comments/a6rfia/rust_2019_organizational_debt

[14] "Rust 2019 and beyond: limits to (some) growth": https://graydon2.dreamwidth.org/263429.html

[15] обсуждение: https://www.reddit.com/r/rust/comments/a9stnw/rust_2019_and_beyond_limits_to_some_growth

[16] перевод: https://habr.com/post/434684

[17] "Thoughts on Rust in 2019": https://words.steveklabnik.com/thoughts-on-rust-in-2019

[18] обсуждение: https://www.reddit.com/r/rust/comments/a9zx7g/thoughts_on_rust_in_2019/

[19] "My thoughts on Rust 2019": https://raphlinus.github.io/rust/2018/12/16/rust-2019.html

[20] перевод: https://habr.com/company/piter/blog/433910

[21] RustRush 2018: https://rustrush.ru

[22] Youtube канале: https://www.youtube.com/channel/UCr6mn18SzIuHjMX0CgrpCew

[23] Keynote. Ashley Williams: https://www.youtube.com/watch?v=fgJjzgSxTXk

[24] Libp2p, a Rust peer-to-peer library. Pierre Krieger: https://www.youtube.com/watch?v=Sss2Tl7WRDQ

[25] Pierre Chevalier: https://github.com/pierrechevalier83

[26] отчет о поездке: https://medium.com/safenetwork/rustrush-2018-a-trip-report-acda361b67d4

[27] Генерация типаж-объектов на лету (или безумие с Rust): https://habr.com/post/432202

[28] idubrov: https://habr.com/users/idubrov/

[29] Так ли страшен Rust, как его малюют: https://habr.com/post/434200

[30] PsyHaSTe: https://habr.com/users/psyhaste/

[31] Rust Analyzer in 2018 and 2019: https://ferrous-systems.com/blog/rust-analyzer-2019

[32] Леша matklad: https://github.com/matklad

[33] rust-analyzer: https://github.com/rust-analyzer/rust-analyzer

[34] RLS: https://github.com/rust-lang/rls

[35] обсуждение: https://www.reddit.com/r/rust/comments/a6ph8p/rust_analyzer_in_2018_and_2019

[36] Игрострой: http://arewegameyet.rs

[37] A simple agenda for the Rust Game Development WG: https://medium.com/rustgamedev/a-simple-agenda-for-the-rust-game-development-wg-485cfc72b088

[38] обсуждение: https://www.reddit.com/r/rust/comments/a45q5i/a_simple_agenda_for_the_rust_game_development_wg

[39] "Adventures of Pascal Penguin": http://www.luduminis.com/pascal/about/

[40] обсуждение: https://www.reddit.com/r/rust_gamedev/comments/a6ive6/adventures_of_pascal_penguin_is_complete

[41] трейлер: https://www.youtube.com/watch?v=EgFr73AUwps

[42] Using Rust for Gamedev: https://medium.com/@michelotti.matthew/using-rust-for-gamedev-2f60b0e4cc5c

[43] обсуждение: https://www.reddit.com/r/rust/comments/acr83h/using_rust_for_gamedev_xpost_rrust_gamedev/

[44] Russian AI Cup 2018: https://blog.kuviman.com/2019/01/01/russian-ai-cup-2018.html

[45] GIF: http://ai_start.gif

[46] прошлогодний пост: https://blog.kuviman.com/2018/01/11/web-renderer-for-russian-ai-cup.html

[47] Sandspiel: https://sandspiel.club/

[48] обсуждение: https://www.reddit.com/r/rust/comments/a6v0p1/sandspiel_a_falling_sand_game_built_in_rustwebgl

[49] Published my first game written in Rust: Energy Grid: https://agmcleod.itch.io/energygrid

[50] обсуждение: https://www.reddit.com/r/rust/comments/abpx2y/published_my_first_game_written_in_rust

[51] Dose Response: https://tryjumping.com/dose-response-roguelike

[52] код: https://github.com/tryjumping/dose-response

[53] обсуждение: https://www.reddit.com/r/rust/comments/a8be46/dose_response_roguelike_game_written_in_rust

[54] веб версия: https://tryjumping.com/dose-response-roguelike/play

[55] This year in gfx-rs: 2018: https://gfx-rs.github.io/2018/12/27/this-year.html

[56] обсуждение: https://www.reddit.com/r/rust/comments/aa17g2/this_year_in_gfxrs_2018

[57] kvark: https://habr.com/users/kvark/

[58] пакет gfx-hal выложен на crates.io: https://crates.io/crates/gfx-hal

[59] обсуждение: https://www.reddit.com/r/rust/comments/a9z1cc/gfxhal_is_finally_published

[60] nitric: https://users.rust-lang.org/t/announcing-nitric-the-successor-of-specs/23388

[61] обсуждение: https://www.reddit.com/r/rust_gamedev/comments/a7ptso/announcing_nitric_the_successor_of_specs

[62] specs: https://github.com/slide-rs/specs

[63] 17cupsofcoffee/tetra: https://github.com/17cupsofcoffee/tetra

[64] обсуждение: https://www.reddit.com/r/rust_gamedev/comments/a8axgd/tetra_another_simple_2d_game_framework_written_in/

[65] Amethyst 0.10: https://www.amethyst.rs/blog/release-0-10

[66] обсуждение: https://www.reddit.com/r/rust_gamedev/comments/a48qkv/amethyst_010_released_and_2019_plans

[67] This month in rustsim #3 (December 2018): https://www.rustsim.org/blog/2019/01/01/this-month-in-rustsim

[68] видео: https://www.youtube.com/watch?v=KEt14fhsFnw

[69] видео: https://www.youtube.com/watch?v=oWFHogFH14E

[70] видео: https://www.youtube.com/watch?v=FGpIaQdvmKo

[71] удобнее получать срезы: http://nalgebra

[72] IntelliJ-Rust: https://intellij-rust.github.io

[73] #88: https://intellij-rust.github.io/2018/12/10/changelog-88.html

[74] #89: https://intellij-rust.github.io/2018/12/25/changelog-89.html

[75] GIF: https://user-images.githubusercontent.com/2539310/50443734-b9f03080-0915-11e9-9a41-c178c91d0d18.gif

[76] What are various red flags for you in Rust code reviews?: https://www.reddit.com/r/rust/comments/a7xswn/what_are_various_red_flags_for_you_in_rust_code

[77] How I Wrote a Modern C++ Library in Rust: https://hsivonen.fi/modern-cpp-in-rust

[78] обсуждение: https://www.reddit.com/r/rust/comments/a2r7w6/how_i_wrote_a_modern_c_library_in_rust_for_firefox

[79] More on RLS version numbering: https://www.ncameron.org/blog/more-on-rls-version-numbering/

[80] обсуждение: https://www.reddit.com/r/rust/comments/a37o5e/more_on_rls_version_numbering

[81] Async in Rust, circa 2018: https://rust-lang-nursery.github.io/wg-net/2018/12/13/async-update.html

[82] обсуждение: https://www.reddit.com/r/rust/comments/a5v0co/async_in_rust_circa_2018

[83] async-io-demo: https://github.com/Hexilee/async-io-demo

[84] обсуждение: https://www.reddit.com/r/rust/comments/a9g43y/rust_asynchronous_io_from_mio_to_coroutine/

[85] mio: https://github.com/carllerche/mio

[86] Reflecting on Rust and WebAssembly in 2018: https://rustwasm.github.io/2018/12/06/reflecting-on-rust-and-wasm-in-2018.html

[87] обсуждение: https://www.reddit.com/r/rust/comments/a3q3lg/reflecting_on_rust_and_webassembly_in_2018

[88] /r/rust "writing "*" for crates in cargo.toml won't always mean "latest version"": https://www.reddit.com/r/rust/comments/a8kzo6/psa_writing_for_crates_in_cargotoml_wont_always

[89] The Swiss Army Knife of Hashmaps: https://blog.waffles.space/2018/12/07/deep-dive-into-hashbrown/

[90] обсуждение: https://www.reddit.com/r/rust/comments/a42gzd/the_swiss_army_knife_of_hashmaps_a_deep_dive_into/

[91] hashbrown: https://github.com/Amanieu/hashbrown

[92] habr: Изучаю Rust: Как я UDP чат сделал c Azul: https://habr.com/post/433624

[93] VanquisherWinbringer: https://habr.com/users/vanquisherwinbringer/

[94] habr: Первые шаги по Rust: https://habr.com/post/433302/

[95] zharko_mi: https://habr.com/users/zharko_mi/

[96] Alexa Skills in Rust: https://medium.com/@amalec/building-alexa-skills-in-rust-4cf54a497ea4

[97] обсуждение: https://www.reddit.com/r/rust/comments/a4p1df/alexa_skills_in_rust

[98] навыков: https://developer.amazon.com/alexa-skills-kit

[99] Inside Rust's Async Transform: https://blag.nemo157.com/2018/12/09/inside-rusts-async-transform.html

[100] обсуждение: https://www.reddit.com/r/rust/comments/a4md4f/inside_rusts_async_transform/

[101] The Spirit tutorial: https://vorner.github.io/2018/12/09/Spirit-Tutorial.html

[102] обсуждение: https://www.reddit.com/r/rust/comments/a4lb6a/spirit_tutorial/

[103] spirit: https://github.com/vorner/spirit

[104] /r/rust: Porting C code to Rust- notes, questions, and request for review: https://www.reddit.com/r/rust/comments/aanedt/porting_c_code_to_rust_notes_questions_and

[105] status_monitor: https://dwm.suckless.org/status_monitor/

[106] A Rusty Advent of Code: My AOC Experience with the Rust Community: https://cprimozic.net/blog/a-rusty-aoc/

[107] обсуждение: https://www.reddit.com/r/rust/comments/aa6svx/a_rusty_advent_of_code_my_aoc_experience_with_the

[108] adventofcode: https://adventofcode.com

[109] Comparing Pythagorean triples in C++, D, and Rust: https://atilanevesoncode.wordpress.com/2018/12/31/comparing-pythagorean-triples-in-c-d-and-rust

[110] обсуждение: https://www.reddit.com/r/rust/comments/ab7hsi/comparing_pythagorean_triples_in_c_d_and_rust

[111] /r/rust: Making Rust Float Parsing Fast and Correct: https://www.reddit.com/r/rust/comments/a6j5j1/making_rust_float_parsing_fast_and_correct

[112] Tokio: A great 2018, an even better 2019: https://tokio.rs/blog/2018-12-recap-2018

[113] обсуждение: https://www.reddit.com/r/rust/comments/a7ovc6/tokio_a_great_2018_an_even_better_2019

[114] Tokio: https://tokio.rs

[115] Using C libraries in Rust: making a *-sys crate: https://kornel.ski/rust-sys-crate

[116] 'cargo-crev' and Rust 2019 fearless code reuse: https://dpc.pw/cargo-crev-and-rust-2019-fearless-code-reuse

[117] обсуждение: https://www.reddit.com/r/rust/comments/aaisq7/cargocrev_and_rust_2019_fearless_code_reuse

[118] код: https://github.com/dpc/crev

[119] демо скринкаст: https://asciinema.org/a/216695?speed=3

[120] enum_dispatch: https://gitlab.com/antonok/enum_dispatch

[121] обсуждение: https://www.reddit.com/r/rust/comments/a7n5hb/enum_dispatch_speed_up_your_dynamic_dispatched

[122] structview: https://gitlab.com/ra_kete/structview-rs

[123] обсуждение: https://www.reddit.com/r/rust/comments/a7mbfw/structview_viewing_binary_data_as_highlevel_data/

[124] cargo-call-stack: https://github.com/japaric/cargo-call-stack

[125] твит: https://twitter.com/japaricious/status/1069569802241486850

[126] swc: https://github.com/swc-project/swc

[127] обсуждение: https://www.reddit.com/r/rust/comments/a8i3sd/v100alpha_release_of_swc_superfast_alternative

[128] babel: https://github.com/babel/babel

[129] ds_store: https://github.com/sinistersnare/ds_store

[130] обсуждение: https://www.reddit.com/r/rust/comments/aah5qb/a_ds_store_parser_for_rust

[131] sd: https://github.com/chmln/sd

[132] обсуждение: https://www.reddit.com/r/rust/comments/a9sncx/sd_an_intuitive_find_replace_cli_sed_alternative

[133] enigma: https://github.com/archSeer/enigma

[134] обсуждение: https://www.reddit.com/r/rust/comments/a90hnz/enigma_a_toy_erlang_vm_in_rust_cross_post_elixir/

[135] http_static: https://github.com/arjsin/http_static

[136] обсуждение: https://www.reddit.com/r/rust/comments/a94idq/http_static_a_simple_command_line_static_file/

[137] tower-web: https://github.com/carllerche/tower-web

[138] ws-unix-framed-bridge: https://github.com/Kixunil/ws-unix-framed-bridge

[139] обсуждение: https://www.reddit.com/r/rust/comments/a7wb2j/ive_created_a_simple_proxy_that_forwards

[140] Exonum 0.10: https://medium.com/meetbitfury/weve-launched-exonum-version-0-10-60234da0c675

[141] segwit: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki

[142] Rocket v0.4: https://rocket.rs/v0.4/news/2018-12-08-version-0.4

[143] обсуждение: https://www.reddit.com/r/rust/comments/a4cbbt/rocket_v04_typed_uris_database_support_revamped

[144] resvg 0.4: https://github.com/RazrFalcon/resvg

[145] обсуждение: https://www.reddit.com/r/rust/comments/a5vjql/resvg_04_an_svg_rendering_library

[146] Tantivy 0.8: https://github.com/tantivy-search/tantivy

[147] обсуждение: https://www.reddit.com/r/rust/comments/a9kasw/tantivy_08_released_and_talking_at_fosdem2019

[148] отсюда: https://www.reddit.com/r/rustjerk/comments/a6nbi0/art_new_users_vs_borrowck

[149] Источник: https://habr.com/post/435614/?utm_campaign=435614