You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Changelog.md
+15-4
Original file line number
Diff line number
Diff line change
@@ -236,13 +236,13 @@ What was added:<br>
236
236
* ImportsProvider now implements caching for Imports.
237
237
* ParserRegistry now implements DataParser allowing for easier creation of more complex (context-free) languages.
238
238
* NumberConverter was refactored, now providing all in one parsing numberOf function that is on average 12x faster than the old implementation.
239
-
* New numberOf function supports octadecimal number and has improved handling of E-notation.
239
+
* New numberOf function supports octadecimal numbers and has improved handling of E-notation.
240
240
* Java integer caching is now in place.
241
241
* DecimalFormater was dumped in favor of the more customizable overridable format method.
242
242
* BooleanConverter and NullConverter were slightly refactored allowing for near O(1) complexity of parsing.
243
243
* ObjectConverter got a significant refactor!
244
244
* It was separated into 2 separate classes across 2 modules. Now it is ProtocolConverter that is extended by ObjectConverter.
245
-
* Static member invocation is now only allowed on a small carefully selected group of classes, fixing the major security exploit that would an attacker to call any static function in a hypothetical REST implementation.
245
+
* Static member invocation is now only allowed on a small carefully selected group of classes, fixing the major security (arbitrary code execution) exploit that would allow an attacker to call any static function of any class in a hypothetical REST implementation scenario. Note that this is only a mitigation that allows you to whitelist the specific classes for static member invocation so the maximal caution is still advised when doing so.
246
246
* Both ObjectConverter and ProtocolConverter were slightly optimized.
247
247
* StringConverter was slightly optimized by introducing caching. It is disabled by default, by enabling it the same String instance will be returned for the same strings during parsing.
248
248
* Static variables were made instance-specific allowing for more flexibility.
@@ -252,7 +252,7 @@ What was added:<br>
252
252
* Mode of SerializationProtocol is now implemented with 64 int (long) bit-packing which allows for chaining of multiple modes which can now be understood as protocol types. This trades an overall number of unique modes for greater utility.
253
253
* Serializer (and core high-level changes):
254
254
* The concept of scope parent variable inheritance was abandoned due to being unacceptable and inefficient (both time and space-wise...), quite error-prone and tedious to work with as well as and potentially dangerous. Not mentioning the fact that the only reason for its existence was to allow you to access variables declared in the parent scope, for which it suboptimal solution to say at least...
255
-
* In a similar fashion, the notion of each parser having to return the new instance of respective object for every parsed string was abandoned as well and is no longer required, allowing for more flexibility and concepts such as already mentioned caching!
255
+
* In a similar fashion, the notion of each parser having to return the new instance of the respective object for every parsed string was abandoned as well and is no longer required, allowing for more flexibility and concepts such as already mentioned caching!
256
256
* OOP NULL was abandoned as well as it was a biproduct of sub-optimal decisions mentioned above and therefore conceptually flawed. It is deprecated and should not be used!
257
257
* All static utility functions (for instance string analyses and processing functions) were separated into new Utils class, in order to achieve better separation of concerns...
258
258
* All string analyses and processing utility functions (for example indexOfNotInObj or splitValues) were rewritten into more "finite state machine"-like form which slightly increases their performance...
@@ -269,7 +269,7 @@ What was added:<br>
269
269
270
270
271
271
* Operators class was added, which is used for injecting all operator parsers into the specific registry.
272
-
* Almost every operator parser was refactored, resulting in simpler, shorter and therefore more optimized code. The most notable ones are:
272
+
* Almost every operator parser was refactored, resulting in shorter, far simpler and therefore more optimized code. The most notable ones are:
273
273
* ArithmeticOperators which now also allows you to declare your own arithmetic operators and/or specify their precedence.
274
274
* Due to refactoring, ResultWrapper is no longer needed and will be removed, this extends to LogicalOperators as well.
275
275
* NegationOperator now supports separate handling of logical negation (! operator) and mathematical negation (- operator), however by default their behavior is the same.
@@ -281,3 +281,14 @@ What was added:<br>
281
281
* Besides the changes mentioned above, countless smaller improvements including numerous bug fixes, performance improvements, API enhancements or Javadoc specifications were added across the whole library.
282
282
* Some functions were slightly renamed but it is usually documented but deprecated functions were removed!
283
283
#
284
+
285
+
# SerialX 1.3.9+
286
+
287
+
Release date: UNKNOWN
288
+
289
+
### Roadmap of potential changes:
290
+
* Separating From/Into API from Scope and Serializer into the standalone classes making it more flexible and customizable.
291
+
* ? Implementing Register in such a way that it will be possible to specify the underlying data structure.
292
+
* Optimizing deserialization process in JussSerializer (unification of "those 2 methods" and getting rid of that stinky legacy spaghetti code they have).
293
+
* ? Optimizations - Introducing char/class-based direct dispatch hashing algorithm for selecting the best fitting data converter for the string/object. (This is likely not going to be possible to fully implement due to internal dependencies between parsers and other legacy reasons...)
0 commit comments