v2.0.0

louis-e/arnisv2.0.0Sep 20, 2024by louis-e

AI Summary

This is a major overhaul that completely rewrites the project in Rust, offering significant performance gains, improved memory management, and a modular architecture, while the previous Python version is archived.

Key Highlights

  • Complete rewrite of the project in Rust for performance and memory safety.
  • Improved performance for generating real-life cities in Minecraft.
  • Modular architecture for easier maintenance and future development.
  • New WorldEditor class for flexible block palette manipulation.
  • Enhanced visual diversity for generated buildings and structures.

Breaking Changes

  • Previous Python version archived under the python-legacy branch.

New Features

  • Rust implementation
  • Modular architecture
  • WorldEditor class
  • Individual OSM element handling

Full Release Notes

## Overview
This is the first major release of Arnis since transitioning from Python to Rust. The project has undergone a significant rewrite, moving to a more performant and efficient language, which introduces numerous improvements in speed, memory management, and overall scalability. This marks Arnis 2.0.0, setting a new foundation for future development.

## Key Features and Changes
1. Complete Rebuild in Rust
The entire project has been reimplemented in Rust, a systems programming language known for its performance and memory safety.
Rust’s powerful concurrency model and performance optimizations result in faster and more efficient world generation.
2. Improved Performance
Major speed improvements in generating real-life cities in Minecraft due to Rust's optimized execution.
Memory management has been significantly improved, reducing the likelihood of crashes and excessive memory use in large-scale generation tasks.
3. Modular Architecture
The Rust version introduces a more modular and maintainable codebase, making future feature development and bug fixes easier.
Cleaner separation of concerns for key functionalities like block management, world editing, and data handling.
4. New Features
The WorldEditor class provides a comprehensive toolbox for creating new modular element processing classes. This allows easy manipulation of block palettes, lighting, and other world generation elements, giving users greater control and flexibility over block placement and data handling. Buildings and structures now offer greater visual diversity, making generated cities look more dynamic and detailed than before. In the Python version, each OpenStreetMap (OSM) element couldn't be uniquely identified or treated separately. With the Rust rewrite, elements can now be differentiated and handled on an individual basis, allowing for richer, more varied city generation that accurately reflects real-world layouts and details. And many more small improvements.
5. Future-Proofing
This Rust port lays the groundwork for future development, with better concurrency support and scalability for even larger maps.

## Deprecation
The previous Python version is now archived under the python-legacy branch. No significant further updates will be made to the Python version.

**Full Changelog**: https://github.com/louis-e/arnis/compare/v1.0.0...v2.0.0