diff --git a/content/posts/newsletter-013/index.md b/content/posts/newsletter-013/index.md index b9c455648..a3883798d 100644 --- a/content/posts/newsletter-013/index.md +++ b/content/posts/newsletter-013/index.md @@ -66,6 +66,90 @@ If needed, a section can be split into subsections with a "------" delimiter. ## Library & Tooling Updates +### Piston + +Piston is a modular game engine written in Rust. + +A new [Discord channel](https://t.co/8YOj3auDr9?amp=1) has been set up +for the Piston project. + +Piston consists of a core library "piston" which itself are composed of +smaller libraries for abstracting input, window and event loop. +This design helps reducing breaking changes in the ecosystem. + +The core library `pistoncore-input` is now stabilized and reached 1.0! +This is the most important core abstraction, because it glues all +libraries that are not independent of the core. + +------ + +Dyon is a rusty dynamically typed scripting language. +It is developed and maintained as part of the Piston project, +but can be used as a standalone library. + +Dyon is designed from the bottom up to be a good gamedev scripting language for Rust. +It uses a lifetime checker instead of garbage collection, a mutability checker, +optional namespaces and ad-hoc types, named argument syntax, +4D vectors and HTML colors, plus a lot more features! + +Recently, Dyon got better macro integration for native Rust types +using `#` as a prefix. + +Here is an example of this feature is being tested in +an experimental offline 3D renderer (not open sourced): + +```text +// Called by `set_simple(scene: _, sdf: _, id: _)`. +dyon_fn!{fn set_simple__scene_sdf_id( + scene: #&mut SimpleScene, + sdf: #&Sdf, + id: f64 +) { + scene.sdfs[id as usize] = sdf.clone() +}} +``` + +To follow updates on Dyon, check out the subreddit +[/r/dyon](https://old.reddit.com/r/dyon/). + +------ + +Piston-Graphics is a library for 2D graphics, written in Rust, +that works with multiple backends. + +`Stencil::Increment` has been added and the ecosystem +has been updated to the latest version. + +------ + +The research branch of the Piston project, AdvancedResearch, +has released a new ECS library [Nano-ECS](https://github.com/advancedresearch/nano_ecs). + +This ECS design stores all components in a single array +and uses bit masks for enabling/disabling components. +An entity can have maximum 64 components and must be initalized +with all components it uses in the future. +Each entity has a slice into the array that stores all components. +The `World` object, `Component` and systems are generated using macros. + +One research project with Nano-ECS is to prototype a UI framework +for Rust with a UI editor (not open sourced yet). +This project uses Piston-Graphics by default, +but can generate draw commands for processing by other 2D APIs. +It is also possible to override rendering of widgets for +custom looks with Piston-Graphics, which is often useful in gamedev. +Recently, this project has gotten to a place where +[tree-view interaction](https://tinyurl.com/y63f5xkv) is working. + +[Piston Discord Channel]: https://t.co/8YOj3auDr9?amp=1 +[/r/dyon]: https://old.reddit.com/r/dyon/ +[@PistonDeveloper twitter)](https://twitter.com/PistonDeveloper) + +[Piston]: https://github.com/pistondevelopers/piston +[Dyon]: https://github.com/pistondevelopers/dyon +[Piston-Graphics]: https://github.com/pistondevelopers/graphics +[Nano-ECS]: https://github.com/advancedresearch/nano_ecs + ## Popular Workgroup Issues in Github ## Meeting Minutes