
Melhor com um atraso de uma semana do que nunca, por isso trago à sua atenção uma seleção subjetiva de notícias enferrujadas para outubro.
Nesta coleção: Rust 1.30, Rust 2018, conferência RustRush, Amethyst 0.9, squatting crates.io, coletor de lixo, controvérsia sobre gráficos 2D, vidas não lexicais, GUI funcional.
Rust 1.30 e Rust2018 testes
Rust 1,30 saiu ( discussão ). As principais inovações são a estabilização parcial de macros procedurais, a importação de macros através do use
regular, a melhoria do sistema de módulos, identificadores "brutos" e suporte para aplicativos no_std
(para obter mais detalhes, consulte a tradução do hub ).
O Rust 1.31 será o primeiro lançamento da edição "Rust2018" ( qual é a "edição"? ). Portanto, todos são convidados a participar da versão beta de teste 1.31 e correção de carga .
RustRush 2018 : conferência de 15 a 16 de dezembro em Moscou
O RustRush 2018 é uma conferência para desenvolvedores no Rust dedicada à web, blockchain, alto desempenho e programação de sistemas.
O site ( rustrush.ru ) foi atualizado - uma lista quase completa de palestrantes e um programa foi publicado, a venda do lote principal de ingressos foi iniciada.
Haverá quatro participantes no projeto Rust Language: Steve Klabnik, Ashley Williams, Pascal Hertlif e Katarina Fey. Das outras estrelas locais e não tantas - Maxim Lapshin com firmware de câmera IP, Kostya Stepanov e Pierre Krieger, também conhecido como tomaka. Programa .
Se alguém quiser enviar um relatório, a Chamada de trabalhos está aberta até 19 de novembro.

Webassembly
Programando WebAssembly with Rust - The Book ( debate ) - está agendado um livro sobre WASM / Rust;
O futuro pós-MVP do WebAssembly: Uma árvore de habilidades de desenho animado ( habro translation: "O futuro do WebAssembly na forma de uma" árvore de habilidades "" ) - onde e como o WASM se desenvolverá mais e qual será o papel de idiomas como Rust em seu ecossistema;
Ruukh ( código , discussão ) - framework web front-end experimental (usa recursos instáveis), inspirado no VueJS e ReactJS;
Draco ( discussão ) - uma biblioteca para criação de aplicativos clientes, inspirada em Redux e Elm ;
Twiggy 0.3.0 ( código ) - entre outras atualizações, o .wasm
do usuário apareceu no .wasm
tamanho de arquivo .wasm
;
Para o parcel (um sistema de construção jovem e rápido para projetos JS, que é amigável com o rast e não requer configuração) , foi lançado um plug-in que o integra ao pacote wasm_bindgen : parcel-plugin-wasm.rs .
Aqui está um modelo que demonstra como o plugin funciona: rustwasm / rust-parcel-template .
Obrigado mvlabat pelas notícias.
Atualização de progresso do Smithy: como reduzi o tamanho do pacote WebAssembly em 90% - o nome é um pouco enganador, porque sobre a redução de peso lá, em essência, apenas uma pequena parte com o espírito de “ajustar as configurações do LLVM e usar o wasm-opt”, mas no artigo encontre outras pequenas coisas úteis.
Aqui, ao mesmo tempo, há um capítulo do livro wasm sobre a redução do tamanho dos artefatos .
As chamadas entre JavaScript e WebAssembly são finalmente rápidas ( discussão ) - não há Rust no artigo em si, mas para o ecossistema Rust / WASM o evento ainda é muito importante;
Multithreading Rust and Wasm ( debate ) - uma análise detalhada da situação de multithreading no Rust e uma demonstração de rastreamento de raios:

Incorporado
rust-industrial-io - usando o libiio , fornece acesso a sensores e drives industriais;
O desenvolvimento do cortex-r-rt - pacote de tempo de execução para processadores Cortex-R foi iniciado;
teclado - driver para esquemas de matriz de teclado;

Bluetooth Low Energy with Rust ( discussão );
Com a estabilização de #[panic_handler]
em 1,30, tornou-se possível desenvolver aplicativos Cortex-M em execução sem um sistema operacional usando um compilador estável.
barramento compartilhado ( código ) - permite compartilhar periféricos com segurança entre dispositivos usando mutexes;
O GT incorporado (grupo de trabalho) está crescendo: já 27 desenvolvedores em 11 equipes;
Igrostroy enferrujado
A biblioteca de álgebra linear "cgmath" está morrendo lentamente em favor da "nalgebra" ;
Motor de jogo Amethyst 0.9 lançado ( discussão ):
- Adicionado componente
SpriteRender
, que simplifica a criação de jogos 2D e adiciona suporte para lotes; - Existe a possibilidade de carregamento conveniente de folhas de sprite (folha de sprites) a partir de arquivos RON ;
- O randomPoison / amethyst-editor é um editor / visualizador / depurador experimental baseado em Electron. Para o trabalho, requer a integração do pacote amethyst-editor-sync no código do seu projeto com uma descrição dos componentes.

Além disso, o trabalho está em andamento:
Novas notas sobre o desenvolvimento do quebra-cabeça RoboInstruct :

Pyro - Um rápido, pequeno e documentado Sistema de Componentes de Entidades ( discussão ) - um novo ECS rápido, em alguns lugares mais rápido que as especificações , carregando dados no SoA, não no AoS . Demonstração GIF . O autor alerta que, por enquanto, o projeto é bruto e, para empreendimentos sérios, é melhor usar especificações por enquanto;
Tutorial Gfx-hal parte 2: Buffers de vértice - a segunda lição sobre como trabalhar com gfx-hal ;
Os últimos dois meses no rustsim # 1 - o que aconteceu com nphysics , ncollide , nalgebra e alga nos últimos dois meses;
GLSL quasiquoting em Rust! ( discussão ) - a quasificação do código shader permite que você use o GLSL diretamente do código Rust com verificações através de rustc no estágio de construção (a versão atual é muito bruta e apenas verifica a formatação, mas versões futuras devem aprender a fazer verificações semânticas mais úteis);
Encrusted ( discussão ) - intérprete do WASM de aventuras de texto do tipo Zork ;
Eventos em sistemas de componentes de entidades ( discussão ) - abordagens para organizar um sistema de eventos baseado no ECS com specs
saudações separadas;
Cócoras em crates.io
O debate sobre se o crates.io deve começar a apoiar os espaços / organizações de nomes vem ocorrendo quase desde o advento da carga. Basta jogar aqui uma lista de várias nos últimos anos:
A questão é complexa, sem fim para o srach. Alguém surtou algumas semanas atrás e decidiu censurar ou enviar spam ao repositório:
Por várias horas, os usuários do serviço tiveram problemas de acesso. Como resultado, nada mudou muito: várias regras adicionais foram introduzidas contra spam definitivo, as discussões foram retomadas com vingança, criando vários outros pré-RFCs no processo. Vamos ver de onde vem tudo no final.
Shifgrethor gc
withoutboats , no processo de pesquisa do que é capaz uma nova API Pin , ainda instável , escreveu uma biblioteca experimental para coleta de lixo - Shifgrethor - e publicou uma série de artigos sobre como e por que ela é organizada:
Esta não é a primeira tentativa de implementar uma biblioteca de GC enferrujada (uma vez que havia @
ponteiros no idioma para esse fim), mas isso difere das tentativas anteriores usando o novo mecanismo Pin
.
Como a biblioteca depende da API do Pin, ainda não pode funcionar com Rust estável. O barqueiro repete várias vezes que o projeto ainda é uma pesquisa puramente e não tem certeza de onde exatamente fará sentido usar essa biblioteca - provavelmente para integrar outros idiomas ao GC ou implementar estruturas de dados complexas.
Shifgrethor fala sobre a IRLO .
Série 2D Note
Por que criar e criar uma biblioteca universal para gráficos 2D para todas as ocasiões não funciona? Muito divertido, eu recomendo olhar os artigos em si e comentar sobre eles.

Nico publicou várias notas sobre como o NLL (o que é? ) Será imediatamente integrado à próxima versão do Rust (até agora deve ser explicitamente incluído através do feature(nll)
), sua implementação e problemas a serem resolvidos em futuras iterações do analisador empréstimo:
Para quem quer se aprofundar um pouco mais, ainda existe um tema de URLO .

Até os comentários no último mês mostram que a GUI é um ponto sensível no Rust. Outra tentativa de corrigir esse buraco no ecossistema: Azul é uma biblioteca IMGUI funcional com armazenamento em cache de estado, usando o WebRender para renderização ( discussão ).
Consulte o site do projeto para obter detalhes: azul.rs.

Em uma linha
- A próxima atualização do IDE Intellij-rust traz, entre outras coisas, uma análise da semântica do movimento e novas "correções rápidas" ( demos gif );
- O alocador de memória jemalloc foi removido da biblioteca padrão em favor de um alocador de "sistema" . O atributo
#[global_allocator]
foi estabilizado recentemente, para que aqueles que desejam retornar o alocador antigo possam ativar o pacote jemallocator ; - O TravisCI implementou o suporte para versões do Windows; o Rust entrou nos três principais idiomas suportados nativamente ;
- Escrevendo um SO em Rust: Interrupções de hardware ( discussão ) - um excelente artigo sobre como trabalhar com interrupções para amantes de baixo nível;
- Você deve aprender C para "aprender como o computador funciona"? ( discussão em / r / programação ) - O aquarista tenta lidar com estereótipos estereotipados;
- Oxidando Python: Acelerando a citação de URL em 10x usando Rust ( discussão ) - um exemplo prático de acelerar o código python reescrevendo a parte computacionalmente pesada no Rust;
- Minha lista de verificação de lançamento para programas Rust ( discussão ) - uma lista explicativa de coisas que devem ser verificadas duas vezes antes da publicação de uma nova versão do projeto;
- Rumo ao SIMD destemido ( discussão ) - Ralph está pensando em como melhorar o suporte ao SIMD no Rust;
- Notas sobre layouts de tipos e ABIs no Rust ( discussão ) - como a versão atual do Rust ABI + está estruturada é um pouco de interesse aleatório aleatório de baixo nível;
- Rust, Battlecode e Halite: uma experiência para iniciantes em concursos de programação de IA - relate a participação em competições de programação de IA ;
- O Rust possui um coletor de lixo estático ( discussão ) - Um hobbista discute o gerenciamento automático de memória no Rust, em oposição aos coletores de lixo clássicos;
- Direções futuras para cbindgen (rust-ffi) ( discussão ) - planos para o desenvolvimento adicional do gerador de ligação de rodízios com base nas bibliotecas enferrujadas da cbindgen ;
- Aplicações Qt com Cargo - como simplificar o processo de construção de uma aplicação Qt enferrujada, tanto quanto possível;
- Mais espaço para carga - @llogiq discute como
target
diretórios de target
consomem espaço em disco como se não estivessem; - Um estudo de caso no Heaptrack ( discussão ) - um pequeno relatório sobre como otimizar o consumo de memória - usando um alocador de sistema , heaptrack, flamegraph , etc;
- Documentação que hospeda docs.rs realocados para enfermaria-enferrujado Isso exigiu melhorias significativas no rustdoc oficial, porque documentos anteriores tinham que usar o garfo remendado da cadeia de ferramentas;
- Problemas no dimensionamento de um grande projeto de ferrugem com múltiplas caixas ( discussão ) - discussão dos problemas de dimensionar um projeto crescente de "múltiplas caixas " (principalmente sobre o tamanho dos binários);
- Que coisas legais você aprendeu sobre Rust recentemente? - Um tópico divertido do reddit com todo tipo de pequenas coisas úteis;
Pacotes novos e atualizados
- reFORM ( discussão ) - uma estrutura de alto desempenho para computação simbólica (analógica do FORM );
- Noria ( discussão , código ) - back-end rápido para aplicativos da web;
- bible.rs ( discussão , código ) - um exemplo de site com actix + diesel para, de repente, uma pesquisa conveniente na Bíblia;
- sugar-rs ( debate ) - uma coleção de macro-açúcar no espírito do
hashmap!{ 1 => 2, 2 => 3 }
; - reflow ( debate ) - um comutador de proxy no nível do sistema, usa Tokio;
- hashbrown ( discussão ) - um porto HashMap, Rust muito rápido do Google SwissTable ;
- Formalidade ( discussão ) - uma linguagem funcional sem coleta de lixo e com evidência formal (olá, Coq / Idris ?), Que pode ser compilada em contratos inteligentes da Ethereum ou CUDA / OpenCL;
- hex ( debate ) - uma coleção de pacotes para gerenciar uma biblioteca de música;
- soup ( discussão ) é uma biblioteca para analisar e manipular HTML, inspirada no lindo animal de estimação da Little Soup. Na implementação usa html5ever ;
- praga 2.0 ( discussão , código ) - o analisador rápido tornou-se ainda mais rápido;
- O emulador de terminal Alacritty agora pode funcionar no Windows - foto ;
- slotmap 0.3 ( discussão sobre qual Slot Map? ) - tipos de chave personalizados adicionados e SecondaryMap (permite armazenar efetivamente informações adicionais para elementos);
- Gotham 0.3 ( site , discussão ) é um framework web rápido e flexível rodando em Rust estável.
tokio
atualizado, dependências hyper
e http
, desempenho aprimorado, apareceu distribuição assíncrona de arquivos estáticos e a capacidade de configurar o tokio-runtime usado; - libdiffuzz (uma alternativa orientada à segurança do desinfetante de memória ) foi ( reescrita em Rust );
Nova RFC
É bastante conveniente para a RFC ver para onde o idioma está indo, então aqui estão alguns interessantes. Há um link "Renderizado" no cabeçalho dos PRs, pelo qual o RFC está disponível de forma legível.
E aqui estão mais algumas discussões pré-RFC:
Isso é tudo, obrigado por assistir!
Se eu não adicionei nenhum link ou evento importante, sinta-se à vontade para incluí-lo nos comentários. :)
KDPV tirado daqui , as fotos restantes dos sites dos respectivos projetos.