We are excited to announce the release of NeoHaskell v0.5.0, featuring significant improvements, bug fixes, and new functionalities. This version addresses major issues from previous releases and introduces enhancements that improve the reliability and performance of NeoHaskell applications.
π New Features and Improvements
π οΈ Fixed Execution of Nested Actions
- Issue Addressed: Nested actions were not being executed, leading to incomplete workflows and unexpected behavior.
- Solution: Refactored the action processing system to correctly handle and execute nested actions.
- Impact: Ensures that all intended actions are performed, providing more reliable and predictable application behavior.
π Introduced HTTP Client Support
-
Capability: Added HTTP client functionalities using the
http-conduit
library. -
Modules Added:
core/http/Http.hs
core/http/Http/Client.hs
-
Features:
- Perform HTTP GET requests with JSON parsing.
- Seamless integration of HTTP requests into NeoHaskell applications.
- Note: Currently supports only GET requests.
π Transitioned from YAML to TOML for Configuration
- Change: Replaced YAML configuration support with TOML.
- Reason: TOML offers a simpler syntax and is better suited for configuration needs.
- Action Required: Users must migrate their YAML configuration files to TOML format.
-
Modules Affected:
- Removed:
core/yaml/Yaml.hs
- Added:
core/toml/Toml.hs
(using thetoml-parser
library)
- Removed:
βοΈ Refactored Core Modules
-
Standardization and Cleanup:
- Removed custom implementations and redundant GHC extensions.
- Cleaned up imports and exports in core modules for clarity and maintainability.
-
IO Module Enhancements (
core/core/IO.hs
):- Added
map
andtry
functions for improved error handling and functional composition.
- Added
-
Result Module Enhancements (
core/core/Result.hs
):- Introduced
fromEither
function for better interoperability with Haskell'sEither
type.
- Introduced
π Improved Service Layer
-
Action Processing (
core/service/Action.hs
):- Rewrote action processing logic to correctly handle nested actions.
- Adjusted the
Action
type and related functions to support new data structures.
-
Event Handling (
core/service/Service/EventWorker.hs
):- Enhanced event worker logic to accurately process events derived from actions.
- Ensured proper propagation of events throughout the system.
-
Runtime State Management (
core/service/Service/RuntimeState.hs
):- Refactored runtime state handling to use standard data types.
- Simplified registration of default action handlers and improved extensibility.
π§Ή Removed large-anon
Library and Anonymous Records
-
Change: Eliminated the
large-anon
library and the use of anonymous records. - Reason: To simplify the codebase, reduce complexity, and improve performance.
-
Changes Made:
- Replaced anonymous records with standard Haskell data types using
data
declarations. - Removed GHC extensions:
OverloadedRecordUpdate
,RebindableSyntax
, and unnecessaryOverloadedRecordDot
. - Updated all modules to use conventional records, enhancing compatibility and maintainability.
- Replaced anonymous records with standard Haskell data types using
- Note: This feature might be reintroduced in the future.
π Miscellaneous Changes
-
Updated Cabal Files:
-
cli/nhcli.cabal
andcore/nhcore.cabal
updated. - Removed unused dependencies and GHC extensions.
- Added new dependencies:
http-conduit
,toml-parser
.
-
-
Console and Logging Enhancements:
- Improved logging messages for better debugging and visibility.
- Standardized log formats and included more contextual information.
-
Code Cleanup:
- Removed deprecated code and modules (e.g.,
core/yaml/Yaml.hs
,cli/src/Neo/Transpile.hs
). - Ensured all modules are updated to use new data type definitions.
- Removed deprecated code and modules (e.g.,
-
Removed Modules:
- Deleted content of
core/core/Record.hs
as it's no longer necessary. - Removed dependencies on external libraries in
core/service/Html.hs
, provided placeholders instead.
- Deleted content of
β οΈ Breaking Changes
-
Data Types:
- Replaced anonymous records with standard data types.
- Affects the structure of
State
,Event
,Action
, and other core components.
-
GHC Extensions:
- Removed extensions that were previously required for anonymous records.
-
Configuration Files:
- Users need to migrate their configuration files from YAML to TOML format.
-
Module Imports:
- Updated module imports and exports.
- User code may require updates to accommodate these changes.
π§ Action Required for Users
-
Update Configuration:
- Migrate your YAML configuration files to TOML format to align with the new configuration system.
-
Code Adjustments:
- Review your code for dependencies on anonymous records and update to use standard data types.
- Check for any GHC extensions that may no longer be necessary or supported.
- Update module imports to match the new module structure.
π£ Conclusion
NeoHaskell v0.5.0 brings important fixes and enhancements that improve the overall stability and functionality of the platform. While some changes are breaking, they pave the way for a more robust and maintainable codebase. We recommend all users upgrade to this version and adjust their code accordingly to benefit from the improvements.
Thank you for your continued support and contributions to NeoHaskell!
Top comments (0)