Skip to content

Releases: luminovang/framework

3.3.5

19 Oct 13:16
Compare
Choose a tag to compare

Full Changelog: 3.3.4...3.3.5

Optimizations & Updates

  • Memory Management: Introduced the Luminova\Utils\WeakReference class and leveraged PHP's WeakMap for better memory management by efficiently handling short-lived objects, improving garbage collection, and enhancing performance.

  • Page Caching: Improved page caching to handle page caching effectively.

  • Template Rendering: Optimized the template view rendering class to terminate early when caching is enabled and valid. Renamed private methods with prefix and suffix lmv to avoid conflicts with application classes, and incorporated WeakMap for exported classes.

  • View Response: Enhanced the Luminova\Template\Response class by removing sendHeaders method and implementing the feature into the send method, allowing validation control via an argument. Removed redundant methods parameters, utilizing class properties instead.

  • Router Class: Updated the router's static page cache method handler to display performance profiling in development mode while serving static content.

  • PHP Attribute Compiler: Refined for better performance and memory management, particularly in generating and caching route attributes.

  • Request Header: Renamed the Luminova\Http\Header method parseHeaders to validate for better clarity in conveying its functionality.

  • Content Encoding: Improved the Luminova\Http\Encoder class for more efficient handling of content encoding and decoding. Introduced the getEncoding method to determine the correct encoding based on the request headers or default environment variables, and the getHandler method to retrieve the appropriate encoding or decoding handler function.

3.3.4

17 Oct 19:41
Compare
Choose a tag to compare

Full Changelog: 3.3.3...3.3.4

New Features

  • Async Background Task Queue Class: Added a new method, onResponse, to allow the registration of a callback that handles the response after each task execution. The callback receives the current result, previous cumulative results, and the instance of the Luminova\Utils\Queue class.

  • Array Merge Result Function: Introduced the array_merge_result function, enabling easy merging of responses of any data type into an existing results variable.

  • Temporal Directory Function: Added the get_temp_dir function, which creates and returns the system's temporary directory or file name.


Optimizations & Updates

  • Asynchronous Queue Class: Optimized for efficient background task handling with optional support for PHP 8.1 Fiber. If Fiber is unavailable, it attempts to use pcntl_fork. If neither is available, it gracefully falls back to the default implementation.

  • Process Executor Class: Enhanced for efficient process management with optional support for PHP 8.1 Fiber. When Fiber is unavailable, it defaults to the standard implementation.

  • HTTP Socket Server Class: Improved to efficiently manage simultaneous connections and optimize the execution lifecycle.

  • Command Execution Helper Class: Enhanced the flush method to correctly handle cases where the output exceeds the terminal window width and wraps. By passing the last output text as an argument to the flush method, it ensures that the wrapped output is properly cleared from the terminal.

  • Sitemap Generator: Optimized sitemap and introduce new configuration public property $scanSpeed, to controller the delay for downloading content from each URL, impacting the overall speed of the sitemap generation process.


To-Dos

1. Sitemap Configuration:

In your Sitemap Configuration Class, add new property $scanSpeed if it doesn't already exist.

// /app/Config/Sitemap.php
<?php
namespace App\Config;

use \Luminova\Base\BaseConfig;

final class Sitemap extends BaseConfig
{ 
    /**
     * The number of seconds to wait before moving to the next URL during sitemap generation.
     * 
     * This value determines the delay for downloading content from each URL, impacting the overall speed
     * of the sitemap generation process. The minimum allowed value is 1 second.
     *
     * @var int $scanSpeed The delay time in seconds for each URL scan.
     * @since 3.3.4
     */
    public int $scanSpeed = 5;
		
	// Other Properties
}

3.3.3

04 Oct 10:21
Compare
Choose a tag to compare

Full Changelog: 3.3.1...3.3.3

New Features

  • HTTP Server: Introduced a new module for creating a simple and flexible HTTP server. This module allows you to open a socket connections to listen for incoming requests, including support for WebSocket and Socket.IO requests. It also has routing capability to route request and handle real-time communications effectively.

  • Routing: Introduced support for a generic method ANY (or Router::ANY_METHODS), enabling routing for any HTTP method, including custom request methods. This enhancement improves performance by allowing a single index to handle all methods instead of creating separate indexes for each HTTP method (e.g., GET|POST|PUT|DELETE|PATCH, etc.). By using ANY, the router efficiently manages routes, reducing overhead and improve request handling.

  • Routing Strict Segment Placeholders : Added support for strict placeholder patterns to specify route segment with strict matching, in both CLI and HTTP routing. This is also applicable to both Attribute and Router method-based routing.

  • Routing Prefix Attribute: Introduced support for the Prefix attribute, allowing you to define specific URI patterns or prefixes that a controller class is allowed to handle. This ensures that all routes within the controller are scoped under a common path, providing better organization and easier management of routes in larger applications. It is particularly useful for grouping related routes, such as versioned API endpoints or modular components of the application.


Optimizations & Updates

  • HTTP Request Class: Enhanced the HTTP request constructor to support the creation of custom HTTP request objects, including request methods, headers, body, and files. Improved the capturing of incoming requests for better performance, incorporating support for Stringable interface to convert the request body to a string.

  • Routes Attribute Compiler: This class has been optimized to efficiently handle controller classes with a defined Prefix attribute, ensuring that routes are properly scoped and organized. It also processes attributes more effectively, by storing cached attributes by prefix resulting in improved performance.

  • NovaKit Command Enhancements: The create:controller command now supports the HMVC modular pattern. A new argument -module has been introduced to specify the module name when generating controller classes.

  • Rest API Headers: Optimized header validations for API's endpoint.


For full list of changes made see https://luminova.ng.

3.3.2

02 Oct 23:43
Compare
Choose a tag to compare

Full Changelog: 3.3.1...3.3.2

New Features

  • HTTP Server: Introduced a new module for creating a simple and flexible HTTP server. This module allows you to open a socket connections to listen for incoming requests, including support for WebSocket and Socket.IO requests. It also has routing capability to route request and handle real-time communications effectively.

  • Routing: Introduced support for a generic method ANY (or Router::ANY_METHODS), enabling routing for any HTTP method, including custom request methods. This enhancement improves performance by allowing a single index to handle all methods instead of creating separate indexes for each HTTP method (e.g., GET|POST|PUT|DELETE|PATCH, etc.). By using ANY, the router efficiently manages routes, reducing overhead and improve request handling.

  • Routing Strict Segment Placeholders : Added support for strict placeholder patterns to specify route segment with strict matching, in both CLI and HTTP routing. This is also applicable to both Attribute and Router method-based routing.

  • Routing Prefix Attribute: Introduced support for the Prefix attribute, allowing you to define specific URI patterns or prefixes that a controller class is allowed to handle. This ensures that all routes within the controller are scoped under a common path, providing better organization and easier management of routes in larger applications. It is particularly useful for grouping related routes, such as versioned API endpoints or modular components of the application.


Optimizations & Updates

  • HTTP Request Class: Enhanced the HTTP request constructor to support the creation of custom HTTP request objects, including request methods, headers, body, and files. Improved the capturing of incoming requests for better performance, incorporating support for Stringable interface to convert the request body to a string.

  • Routes Attribute Compiler: This class has been optimized to efficiently handle controller classes with a defined Prefix attribute, ensuring that routes are properly scoped and organized. It also processes attributes more effectively, by storing cached attributes by prefix resulting in improved performance.

  • NovaKit Command Enhancements: The create:controller command now supports the HMVC modular pattern. A new argument -module has been introduced to specify the module name when generating controller classes.

  • Rest API Headers: Optimized header validations for API's endpoint.


For full list of changes made see https://luminova.ng.

3.3.1

21 Sep 11:11
Compare
Choose a tag to compare

Full Changelog: 3.3.0...3.3.1

General Overview

Luminova ^3.3.0 introduces major updates and performance improvements. Key features of this release include:

  • HMVC Support: Build applications using the Hierarchical Model-View-Controller (HMVC) modular architecture.
  • Network Testing: Test applications on various network-connected devices with the NovaKit PHP development server.
  • Static Page Cache Versioning: Utilize the app.version environment variable to manage cache versions. Previous versions can be specified as an array in page.cache.app.versions environment variable for rendering cached content: (e.g, page.cache.app.versions = [1.0.0, 1.1.0]).
  • New Utility Classes: Enhanced functionality with the introduction of classes for:
    • Event Handling
    • XHtml Document Building
    • Input Field Building
    • Process Execution

Fix

  • Bug Fix: Removed extra $ syntax in the Luminova\Builder\Inputs class and addressed other minor issues.

Optimization

  • Sitemap Generator: Optimized sitemap generator to skips 404 error URLs. This version also introduces the following public properties:
    • $includeStaticHtml: (bool) When set to true, this property includes static .html URLs in the sitemap.
    • $skipStaticHtml: (array<string,string>)This property allows the definition of specific URL patterns to be excluded from static URL generation, providing more control over the sitemap content.
    • $changeFrequently: (string|null) This property allows you to define the frequency of URL changes, offering search engines valuable insights for indexing.

See Full Changelog

3.3.0

20 Sep 18:20
Compare
Choose a tag to compare

Full Changelog: 3.2.9...3.3.0

General Overview

Luminova 3.3.0 introduces major updates and performance improvements. Key features of this release include:

  • HMVC Support: Build applications using the Hierarchical Model-View-Controller (HMVC) modular architecture.
  • Network Testing: Test applications on various network-connected devices with the NovaKit PHP development server.
  • Static Page Cache Versioning: Utilize the app.version environment variable to manage cache versions. Previous versions can be specified as an array in page.cache.app.versions environment variable for rendering cached content: (e.g, page.cache.app.versions = [1.0.0, 1.1.0]).
  • New Utility Classes: Enhanced functionality with the introduction of classes for:
    • Event Handling
    • XHtml Document Building
    • Input Field Building
    • Process Execution

New Features

  • HMVC (Hierarchical Model-View-Controller): Luminova now supports HMVC for modular application development. This feature is disabled by default and can be enabled through the environment variable feature.app.hmvc.

See Full Changelog

3.2.9

14 Sep 12:29
Compare
Choose a tag to compare

Full Changelog: 3.2.8...3.2.9

3.2.8

08 Sep 13:31
Compare
Choose a tag to compare

Full Changelog: 3.2.7...3.2.8

Optimization

  • Enhanced the PHP development server to optionally expose a network address, allowing applications to be tested on other devices within the same network when running php novakit server --testing.

Bug Fixes

  • Resolved minor issues and improved overall performance.

3.2.7

02 Sep 19:49
Compare
Choose a tag to compare

Optimizations & Updates

  • Static Caching: Enhanced to support versioned cache based on previous application versions.
  • Execution Lifecycle: Adjusted caching to execute after the template rendering process is complete.
  • Environment Variables: Improved the env global function to return the correct data types.

Bug Fix

  • Typo: Removed an extra $ symbol from the Cron class in the previous update.

For a complete list of changes, view the changelog.

Full Changelog: 3.2.6...3.2.7

3.2.6

01 Sep 15:14
Compare
Choose a tag to compare

General

Luminova 3.2.6 includes significant updates that enhance performance and error handling mechanisms and improved debugging capabilities with debug tracing for all error occurrences.
This update also features enhanced official documentation, with clearer titles and detailed examples of usage to illustrate features and implementations better.


New Features

  • Luminova\Storages\Stream: A stream handler for efficiently reading and writing large data volumes, integrated with the latest cURL network client response updates.
  • Luminova\Config\Enums\ErrorCodes: A comprehensive list of exceptions and error codes used throughout the framework for various error handling scenarios.
  • NovaKit Command: Introduction of the novakit log command for managing error logs.
  • View Content Caching: utilizes app.version to store and retrieve page caching.
  • array_extend_default: A global helper function, it allows you to extend an array retaining the default values, it only applies a new element that doesn't exist in default.

Optimizations & Updates

  • Luminova\Debugger\Profiling: Enhanced performance profiling now includes total database query execution time, command line performance profiling, and API performance logging.
  • Luminova\Datable\Builder: Optimized performance, introduced new cache management methods, and replaced expired cache content instead of deleting it. Fixed issues with the in method and added new arguments for the insert method.
  • \Luminova\Exceptions\AppException: Improved error handling with support for string error codes and a new getName method.
  • Luminova\Seo\Sitemap: Optimized to support URL prefix definitions to limit scanning.
  • Luminova\Seo\Schema: Enhanced scheme builder and configuration optimizations.
  • Luminova\Http\Network: Improved network operations and implemented necessary interfaces for the Guzzle client.
  • Luminova\Http\Client\Curl: Optimized for various configurations, including multipart uploads, header callbacks, and large stream handling.
  • Luminova\Http\Message\Response: Enhanced response handling with new methods, such as getBody, to return a stream object.
  • Command Executor: Improved command executor now suggests commands when an unknown novakit command is run.
  • Luminova\Command\Terminal: Optimized methods, resolved issues with watcher and progress, and introduced spinner and terminate methods, along with enhancements to other methods.

Changes & Renames


For the full list of new changes see the change of log.

Full Changelog: 3.2.5...3.2.6