NitroPascal v0.4.0 #10
jarroddavis68
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
🚀 NitroPascal v0.4.0: Real-World Usage
TL;DR
NitroPascal v0.4.0 proves real-world viability with function pointers, structured RTL modules (Types, SysUtils, StrUtils, DateUtils), static library linking (raylib example included), performance benchmarks showing competitive results against Delphi, and a dramatically expanded C++ runtime. You can now build, benchmark, and ship production applications with confidence.
🎯 The Real-World Milestone
This release isn't about adding more features - it's about proving NitroPascal works in production. You can now:
✅ Use function pointers - Callbacks, event handlers, higher-order functions
✅ Link static libraries - Demonstrated with raylib game development library
✅ Structure with RTL modules - Types, SysUtils, StrUtils, DateUtils
✅ Benchmark performance - Comprehensive NitroPascal vs Delphi comparison
✅ Ship single executables - No DLL dependencies with static linking
✅ Build real apps - Complete toolkit for production software
🔥 What's New in v0.4.0
Function Pointers - Callbacks and Events
The big feature request is here. Function pointers (procedural types) enable callbacks, event-driven programming, and functional patterns:
Use cases:
Static Library Linking - Ship Single Executables
Want to distribute a single .exe with no dependencies? Static linking is here, demonstrated with raylib:
This is a complete, working game window that compiles to a single executable with raylib statically linked. No DLLs to ship. Just one .exe file.
Benefits:
Structured RTL Modules - Professional Organization
The Runtime Library is now organized into standard Pascal modules for discoverability and maintainability:
Types - Base type declarations:
SysUtils - System utilities and conversions:
StrUtils - Advanced string manipulation:
DateUtils - Date/time functions (foundation):
This modular organization makes the API discoverable, maintainable, and familiar to Delphi developers.
Performance Benchmarks - Competitive Results
The included benchmark suite provides quantitative comparison between NitroPascal and Delphi:
Test scenarios:
Results show NitroPascal delivers competitive performance thanks to:
Run the benchmarks yourself (
binfolder):Enhanced String Library - Complete Unicode Support
New string functions for advanced manipulation and wide character support:
Expanded Math Library - Scientific Computing
Complete mathematical toolkit for scientific and engineering applications:
Enhanced File I/O - Complete Delphi Compatibility
New file operations for complete Delphi text file compatibility:
Enhanced Memory Functions - Efficient Operations
Type-specific fill operations for better performance:
Code Generation Improvements - Better Debugging
Source position tracking in generated C++ code:
Generates:
Benefits:
💪 Why This Matters
v0.3.0 asked: "Is NitroPascal production-ready?"
v0.4.0 answers: "Yes, and here's proof!"
This release provides quantifiable evidence of real-world viability:
🎁 The Growing RTL
The Runtime Library continues expanding with professional organization:
Organized Modules:
Key Features:
Everything maintains true Delphi semantics while generating optimal C++ code that compiles to native machine code via Zig's LLVM backend.
📚 Documentation
Complete feature tracking:
Check the docs to see exactly what you can build today!
🚀 Getting Started
Example: Function pointer callback pattern:
This is production-ready callback handling. Framework integration. Event systems. Plugin architectures. All possible now.
🌐 Community
🔮 What's Next?
With function pointers, static linking, structured RTL, and proven performance, NitroPascal has the foundation for any application type. What do YOU want to build? Let us know in discussions!
🎊 The Bottom Line
NitroPascal v0.4.0 proves real-world viability.
Function pointers enable callbacks and frameworks. Static linking ships single executables. Structured RTL provides professional organization. Benchmarks show competitive performance. The raylib example demonstrates real library integration.
Build games. Build utilities. Build applications.
Write pure Delphi. Link static libraries. Get native performance. Ship everywhere. 🚀
File Integrity
Files are signed with minisign using this public key:
RWTqBYfsUOCQscb6ZeknLC0On3cvWCVzMzlHamtgXNaDOO4bNs3WCSkVThis discussion was created from the release NitroPascal v0.4.0.
Beta Was this translation helpful? Give feedback.
All reactions