Releases
v0.5.0
v0.5.0: HTTP, TOML, Nested Actions Now Executed and Major Refactoring
Latest
🚀 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 the toml-parser
library)
⚙️ 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
and try
functions for improved error handling and functional composition.
Result Module Enhancements (core/core/Result.hs
):
Introduced fromEither
function for better interoperability with Haskell's Either
type.
🚀 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 unnecessary OverloadedRecordDot
.
Updated all modules to use conventional records, enhancing compatibility and maintainability.
Note : This feature might be reintroduced in the future.
📝 Miscellaneous Changes
Updated Cabal Files :
cli/nhcli.cabal
and core/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 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.
⚠️ 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.
You can’t perform that action at this time.