Releases: luminovang/framework
3.3.5
Full Changelog: 3.3.4...3.3.5
Optimizations & Updates
-
Memory Management: Introduced the
Luminova\Utils\WeakReference
class and leveraged PHP'sWeakMap
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 incorporatedWeakMap
for exported classes. -
View Response: Enhanced the
Luminova\Template\Response
class by removingsendHeaders
method and implementing the feature into thesend
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
methodparseHeaders
tovalidate
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 thegetEncoding
method to determine the correct encoding based on the request headers or default environment variables, and thegetHandler
method to retrieve the appropriate encoding or decoding handler function.
3.3.4
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 theLuminova\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 theflush
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
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
andSocket.IO
requests. It also has routing capability to route request and handle real-time communications effectively. -
Routing: Introduced support for a generic method
ANY
(orRouter::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 usingANY
, 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
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
andSocket.IO
requests. It also has routing capability to route request and handle real-time communications effectively. -
Routing: Introduced support for a generic method
ANY
(orRouter::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 usingANY
, 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
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 inpage.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 theLuminova\Builder\Inputs
class and addressed other minor issues.
Optimization
- Sitemap Generator: Optimized sitemap generator to skips
404
error URLs. This version also introduces the followingpublic
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.
- $includeStaticHtml: (
See Full Changelog
3.3.0
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 inpage.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
Full Changelog: 3.2.8...3.2.9
3.2.8
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
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 theCron
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
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 theinsert
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 unknownnovakit
command is run.- Luminova\Command\Terminal: Optimized methods, resolved issues with
watcher
andprogress
, and introducedspinner
andterminate
methods, along with enhancements to other methods.
Changes & Renames
Luminova\Base\BaseApplication
renamed to Luminova\Core\CoreApplication to indicate it can only be extended once forApp\Application
.
For the full list of new changes see the change of log.
Full Changelog: 3.2.5...3.2.6