All notable changes to this project will be documented in this file.
- Support for [email protected] and [email protected] has ended;
- Reduced object allocation count during type checking process;
- Removed useless
Incorrect type
text part fromSmartCore::Initializer::IncorrectTypeError
exception message; - Updated development dependencies;
SmartCore::Engine::ReadWriteLock
is used insteadSmartCore::Engine::Lock
in order to decrease the count of RubyVM's context switching and useless Mutexes usage;- reduced
KeyError
-exception flow use cases in some cases inside the framework internals (in order to reduce object allocations under the hood); - bumped development dependencies;
- bumped core dependencies (in order to use
ReadWiteLock
(and actualize available inner-framework features);
finalize
now accepts lambdas with arity-2
. For example->(a, *b) {}
or:freeze.to_proc
which inRuby >= 3
returns lambda with arity equal to-2
.
:finalize
block is not invoked on theoption
withoptional: true
flag;
- New options for option and param attributes:
- Support for attribute aliasing (
:as
parameter);- supports:
option
,param
;
- supports:
- Support for attribute auto-casting (
:auto_cast
parameter);- supports:
option
,param
;
- supports:
- Support for mutable attributes (
:mutable
parameter) with type-validation inside;- supports:
option
,options
,param
,params
;
- supports:
- Support for optional attributes (
:optional
parameter);- supports:
option
;
- supports:
- Support for attribute aliasing (
- SmartCore::Initializer::Configuration:
- Configuration setting
strict_options
now works separately "per-class" in all configs manner (each class shares the global state but has own state too) - Support for per-class/global
:auto_cast
configuration;- provides a global/per-class behavior for
:cast
option (false
by default);
- provides a global/per-class behavior for
- Configuration setting
options
declaration now supportsprivacy
option;params
declaration now supportsprivacy
option;
- Drop support of [email protected];
:default
attribute parameter now duplicates the passed value during object instantiation;:default
attribute parameter only works withoption
attribute (param
can't havedefault
parameter now);- Attribute values generated by
:finalize
are type-validated now too; - Now lambda-based
:finalize
attributes are being checked for the signature during attribute declaration; - Some error messages have become more readable;
send
method overlaping/rewriting: otions and params named assend
breaks the internal framework-related invocations of the attribute definitioning inside the custom object constructor (this name rewrites internal Ruby'ssend
method and brokes some things);
strict_options
config option for non-strict checking of passed options;
- Validation messages for incorrect attribute types;
- Updated
smart_types
dependency (~> 0.4.0
) to guarantee Ruby@3 compatibility; - Updated development dependencies;
- Support for Ruby 3;
- Moved from
TravisCI
to nothing (todo: migrate toGitHub Actions
). Temporary: we must run test cases locally. - Updated development dependencies;
- Deeply inherited entities lose their
__initializer_settings__
entitiy;
- Deeply inherited entities lose their class attribute definers;
extend_initialization_flow
alias method forSmartCore::Initializer.ext_init
;- Access methods to the instance attribute lists (
#__params
,#__options__
,#__attributes__
);
- Updated development dependencies;
- Constructor: disallow unknown option attributes;
- Release :)