
Mieux avec un retard d'une semaine que jamais, je porte donc à votre attention une sélection subjective de nouvelles rouillées pour octobre.
Dans cette collection: Rust 1.30, Rust 2018, conférence RustRush, Amethyst 0.9, squatting crates.io, ramasse-miettes, controverse sur les graphiques 2D, durée de vie non lexicale, interface graphique fonctionnelle.
Test de Rust 1.30 et Rust2018
Rust 1.30 est sorti ( discussion ). Les principales innovations sont la stabilisation partielle des macros procédurales, l'importation de macros via une use
régulière, l'amélioration du système de modules, les identifiants bruts et la prise en no_std
applications no_std
(pour plus de détails, voir la traduction habro ).
Rust 1.31 sera la première version de l' édition "Rust2018" ( qu'est-ce que "l'édition"? ), Et donc tout le monde est invité à se joindre à la version bêta-test 1.31 et au fix de chargement .
RustRush 2018 : conférence du 15 au 16 décembre à Moscou
RustRush 2018 est une conférence pour les développeurs sur Rust dédiée au web, à la blockchain, à la haute performance et à la programmation système.
Le site ( rustrush.ru ) a été mis à jour - une liste presque complète d'orateurs et un programme ont été publiés, la vente du lot principal de billets a commencé.
Il y aura quatre participants au projet Rust Language: Steve Klabnik, Ashley Williams, Pascal Hertlif, Katarina Fey. Parmi les autres stars locales et moins nombreuses - Maxim Lapshin avec le firmware de la caméra IP, Kostya Stepanov et Pierre Krieger alias tomaka. Programme .
Si quelqu'un veut soumettre un rapport, l' appel à communications est ouvert jusqu'au 19 novembre.

Webassembly
Programmation de WebAssembly avec Rust - The Book ( discussion ) - un livre sur WASM / Rust est prévu;
L'avenir post-MVP de WebAssembly: Un arbre de compétences de dessin animé ( traduction en habro: "L'avenir de WebAssembly sous la forme d'un" arbre de compétences "" ) - où et comment WASM se développera davantage et quel rôle les langues comme Rust joueront-elles dans son écosystème;
Ruukh ( code , discussion ) - framework web frontal expérimental (utilise des fonctionnalités instables), inspiré de VueJS et ReactJS;
Draco ( discussion ) - une bibliothèque pour construire des applications clientes, inspirée de Redux et Elm ;
Twiggy 0.3.0 ( code ) - entre autres mises à jour, le .wasm
utilisateur est apparu dans le .wasm
taille de fichier .wasm
;
Pour Parcel (un système de construction jeune et rapide pour les projets JS, qui est convivial avec le rast et ne nécessite pas de configuration) , un plugin a été publié qui l'intègre au package wasm_bindgen : parcel-plugin-wasm.rs .
Voici un modèle qui montre comment fonctionne le plugin: rustwasm / rust-parcel-template .
Merci mvlabat pour les nouvelles.
Mise à jour de la progression de Smithy: comment j'ai diminué la taille du bundle WebAssembly de 90% - le nom est un peu trompeur, car à propos de la réduction de poids, essentiellement, seulement un petit morceau dans l'esprit de "peaufiner les paramètres LLVM et d'utiliser wasm-opt", mais dans l'article trouver d'autres petites choses utiles.
Voici, en même temps, un chapitre du livre du wasm sur la réduction de la taille des artefacts .
Les appels entre JavaScript et WebAssembly sont enfin rapides ( discussion ) - il n'y a pas de rouille dans l'article lui-même, mais pour l'écosystème Rust / WASM l'événement est toujours très important;
Multithreading Rust and Wasm ( discussion ) - une analyse détaillée de la situation du multithreading à Rust et une démo de lancer de rayons:

Intégré
rust-industrial-io - en utilisant libiio , donne accès aux capteurs et entraînements industriels;
Développement de cortex-r-rt - le package d'exécution pour les processeurs Cortex-R a commencé;
clavier - pilote pour les schémas de matrice de clavier;

Bluetooth Low Energy with Rust ( discussion );
Avec la stabilisation de #[panic_handler]
à 1,30, il est devenu possible de développer des applications Cortex-M fonctionnant sans OS en utilisant un compilateur stable.
shared-bus ( code ) - vous permet de partager en toute sécurité des périphériques entre des appareils à l'aide de mutex;
Le GT intégré (groupe de travail) se développe: déjà 27 développeurs dans 11 équipes;
Igrostroy rouillé
La bibliothèque d'algèbre linéaire "cgmath" est en train de mourir lentement en faveur de "nalgebra" ;
Sortie du moteur de jeu Amethyst 0.9 ( discussion ):
- Ajout
SpriteRender
composant SpriteRender
, qui simplifie la création de jeux 2D et ajoute la prise en charge du traitement par lots; - Il existe une possibilité de chargement pratique des feuilles de sprite (feuille de sprite) à partir des fichiers RON ;
- randomPoison / amethyst-editor est un éditeur / visualiseur / débogueur expérimental basé sur Electron. Pour le travail, il nécessite l'intégration du package amethyst-editor-sync dans le code de votre projet avec une description des composants.

De plus, des travaux sont en cours sur:
Nouvelles notes sur le développement du puzzle RoboInstruct :

Pyro - Un système de composants d'entité rapide, petit et documenté ( discussion ) - un nouvel ECS rapide, à certains endroits plus rapide que les spécifications en téléchargeant des données vers SoA, pas AoS . Démo GIF . L'auteur prévient que pour le moment le projet est brut et pour les entreprises sérieuses, il est préférable d'utiliser les spécifications pour l'instant;
Tutoriel Gfx-hal partie 2: tampons de sommet - la deuxième leçon sur l'utilisation de gfx-hal ;
Les deux derniers mois dans rustsim # 1 - ce qui est arrivé à la nphysique , à la ncollide , à la nalgèbre et aux algues au cours des deux derniers mois;
GLSL quasiquoter en rouille! ( discussion ) - la quasification du code de shader vous permet d'utiliser GLSL directement à partir du code Rust avec des vérifications via rustc au stade de la construction (la version actuelle est très brute et ne vérifie que le formatage, mais les futures versions devraient apprendre à faire des vérifications sémantiques plus utiles);
Incrusté ( discussion ) - Interprète WASM d'aventures textuelles de type Zork ;
Événements dans les systèmes de composants d'entité ( discussion ) - approches pour organiser un système d'événements basé sur ECS avec des specs
salutations distinctes;
Accroupi à crates.io
Le débat sur la question de savoir si crates.io devrait commencer à soutenir les espaces de noms / organisations se poursuit presque depuis l'avènement du fret. Jetez ici une liste de plusieurs de ces dernières années:
La question est complexe, pas de fin à la srach. Quelqu'un a paniqué il y a quelques semaines et a décidé de reprocher ou de spammer le référentiel:
Pendant plusieurs heures, les utilisateurs du service ont rencontré des problèmes d'accès. En conséquence, rien n'a beaucoup changé: plusieurs règles supplémentaires ont été introduites contre le spam pur et simple, les discussions ont repris avec une vengeance, créant plusieurs pré-RFC supplémentaires dans le processus. Voyons voir où tout cela arrive à la fin.
Shifgrethor gc
sans bateaux , en train de rechercher ce dont une nouvelle API Pin , encore instable, est capable, a écrit une bibliothèque expérimentale pour la collecte des ordures - Shifgrethor - et a publié une série d'articles sur comment et pourquoi elle est organisée:
Ce n'est pas la première tentative d'implémentation d'une bibliothèque GC rouillée (une fois qu'il y avait des pointeurs @
dans le langage à cet effet), mais cela diffère des tentatives précédentes utilisant le nouveau mécanisme Pin
.
Étant donné que la bibliothèque dépend de l'API Pin, elle ne peut pas encore fonctionner sur Rust stable. Le batelier répète plusieurs fois que le projet est encore purement de recherche et il n'est même pas sûr où exactement il sera judicieux d'utiliser cette bibliothèque - très probablement pour intégrer d'autres langues avec GC ou mettre en œuvre des structures de données complexes.
Shifgrethor parle de IRLO .
Série de notes 2D
Pourquoi prendre et créer une bibliothèque universelle de graphiques 2D pour toutes les occasions ne fonctionne pas? Très amusant, je recommande de parcourir les articles eux-mêmes et de les commenter.

Nico a publié plusieurs notes sur la façon dont NLL ( qu'est-ce que c'est? ) Sera immédiatement intégré dans la prochaine version de Rust (jusqu'à présent, il doit être explicitement inclus via la feature(nll)
), son implémentation et les problèmes à résoudre dans les futures itérations de l'analyseur emprunter:
Pour ceux qui veulent creuser un peu plus, il existe toujours un thème URLO .

Même les commentaires sur le dernier mois montrent que l'interface graphique est un point sensible à Rust. Autre tentative pour combler ce trou dans l'écosystème: Azul est une bibliothèque IMGUI fonctionnelle avec mise en cache d'état, utilisant WebRender pour le rendu ( discussion ).
Voir le site Web du projet pour plus de détails: azul.rs.

En une seule ligne
- La prochaine mise à jour IDE d'Intellij-rust apporte, entre autres, une analyse de la sémantique du mouvement et de nouvelles «solutions rapides» ( démos gif );
- L' allocateur de mémoire jemalloc a été supprimé de la bibliothèque standard au profit d'un allocateur «système» . L'attribut
#[global_allocator]
a récemment été stabilisé, donc ceux qui souhaitent retourner l'ancien allocateur peuvent activer le paquet jemallocator ; - TravisCI a déployé la prise en charge des versions Windows, Rust est entré dans les trois principales langues prises en charge nativement ;
- Écrire un système d'exploitation dans Rust: interruptions matérielles ( discussion ) - un excellent article sur le travail avec des interruptions pour les amateurs de bas niveau;
- Devriez-vous apprendre C pour «apprendre comment l'ordinateur fonctionne»? ( discussion dans / r / programmation ) - l'amateur essaie de gérer les stéréotypes stéréotypés;
- Oxydation de Python: Accélération des citations d'URL par 10x en utilisant Rust ( discussion ) - un exemple pratique d'accélération de code Python en réécrivant la partie de calcul lourde dans Rust;
- Ma liste de contrôle de sortie pour les programmes Rust ( discussion ) - une liste explicative des choses qui devraient être revérifiées avant la publication d'une nouvelle version du projet;
- Vers une SIMD sans peur ( discussion ) - Ralph réfléchit à la façon d'améliorer le support SIMD dans Rust;
- Remarques sur les dispositions de type et les ABI dans Rust ( discussion ) - la façon dont la version actuelle de Rust ABI + est structurée est un peu un intérêt aléatoire aléatoire de bas niveau;
- Rust, Battlecode et Halite: une expérience de débutant avec des concours de programmation d'IA - rapport sur la participation à des compétitions de programmation d'IA ;
- Rust a un ramasse-miettes statique ( discussion ) - Un amateur discute de la gestion automatique de la mémoire dans Rust, par opposition aux ramasse-miettes classiques;
- Orientations futures pour cbindgen (rust-ffi) ( discussion ) - plans pour le développement ultérieur du générateur de liaison de roulette basé sur les bibliothèques rouillées de cbindgen ;
- Applications Qt avec Cargo - comment simplifier autant que possible le processus de construction d'une application Qt rouillée;
- Plus d'espace pour le fret - @llogiq explique comment
target
répertoires target
consomment de l'espace disque comme s'ils ne l'étaient pas; - Une étude de cas dans Heaptrack ( discussion ) - un petit rapport sur l'optimisation de la consommation de mémoire - en utilisant un allocateur système , heaptrack, flamegraph , etc.;
- Documentation hébergeant docs.rs déplacé à rust-lang-nursery . Cela a nécessité des améliorations significatives du rustdoc officiel, car les docs.rs antérieurs devaient utiliser la fourche rapiécée de la chaîne d'outils;
- Problèmes de mise à l'échelle d'un grand projet de rouille multi-caisses ( discussion ) - discussion sur les problèmes de mise à l'échelle d'un projet "multi- caisses " en croissance (principalement sur la taille des binaires);
- Quels trucs sympas avez-vous appris sur Rust récemment? - Un sujet reddit divertissant avec toutes sortes de petites choses utiles;
Packages nouveaux et mis à jour
- reFORM ( discussion ) - un cadre performant pour le calcul symbolique (analogue de FORM );
- Noria ( discussion , code ) - backend rapide pour les applications web;
- bible.rs ( discussion , code ) - un exemple d'un site avec actix + diesel pour, tout à coup, une recherche pratique dans la bible;
- sugar-rs ( discussion ) - une collection de macro-sucre dans l'esprit de
hashmap!{ 1 => 2, 2 => 3 }
; - reflow ( discussion ) - un commutateur de proxy au niveau du système, utilise Tokio;
- hashbrown ( discussion ) - un port HashMap, Rust très rapide de Google SwissTable ;
- Formalité ( discussion ) - un langage fonctionnel sans collecte de déchets et avec des preuves formelles (bonjour, Coq / Idris ?), Qui peut être compilé dans des contrats intelligents Ethereum ou CUDA / OpenCL;
- hex ( discussion ) - une collection de packages pour gérer une bibliothèque musicale;
- soup ( discussion ) est une bibliothèque pour analyser et manipuler le HTML, inspirée de l'animal de compagnie de la belle Little Soup. Dans l'implémentation utilise html5ever ;
- pest 2.0 ( discussion , code ) - l'analyseur rapide est devenu encore plus rapide;
- L'émulateur de terminal Alacritty peut désormais fonctionner sous Windows - image ;
- slotmap 0.3 ( discussion sur quel Slot Map? ) - ajout de types de clés personnalisés et de SecondaryMap (vous permet de stocker efficacement des informations supplémentaires pour les éléments);
- Gotham 0.3 ( site web , discussion ) est un framework web rapide et flexible fonctionnant sur Rust stable. Mise à jour des dépendances
tokio
, hyper
et http
, amélioration des performances, distribution asynchrone des fichiers statiques et possibilité de configurer le tokio-runtime utilisé; - libdiffuzz (une alternative de sécurité à l'assainisseur de mémoire ) a été ( réécrit en Rust );
Nouveau RFC
Il est assez pratique pour le RFC de voir dans quelle direction se dirige la langue, alors voici quelques-unes intéressantes. Il y a un lien «Rendu» dans l'en-tête des RP, par lequel le RFC est disponible sous une forme lisible.
Et voici quelques autres discussions pré-RFC:
C'est tout, merci d'avoir regardé!
Si je n'ai ajouté aucun lien ou événement important, n'hésitez pas à le déposer dans les commentaires. :)
KDPV prise d'ici , les photos restantes des sites des projets respectifs.