Skip to content

v0.5.0: HTTP, TOML, Nested Actions Now Executed and Major Refactoring

Latest
Compare
Choose a tag to compare
@NickSeagull NickSeagull released this 16 Sep 15:25
deb9780

🚀 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.