- Added functions
array:at
,array:insert
, andarray:slices
.
- Improved messages for foreign-key constraint errors.
- Added support for well formatted errors from "raise" statements.
- Function
file:copy
now supports streaming copy.
- Added support for a banner string (evaluated) in [Gateway.banner] to be shown as entry point when "f" is not provided.
- Fixed bug in
gateway:continue
causing no output for the client.
- Improved error messages for not-null constraints.
- Improved error messages for unique constraints.
- Prepared statements now support arrays of values.
- Database functions updated to accept arrays in prepared statements.
- Updated PostgreSQL error message handler to provide more friendly messages.
- Fixed bug causing importing from "./" or "../" to not resolve to the correct folder.
- Updated deployment scripts.
- Updated documentation and added new deployment file.
- Added service
wind-2
which returns the 'response' in the HTTP response status code and also in the response body. - Added service
wind-3
which NO LONGER returns a 'response' field in the response body, only as the HTTP status code.
- Updated query processor to allow '?' as parameter placeholder, internally will be replaced by $1, $2, etc.
- Added support for mapped imports using the 'imports' configuration section.
- Improved error message when position code is invalid for smartcut.
- Added parameter 'limit' to specify max number of occurrences to replace when using the
re:replace
function.
- Updated error codes to match 1:1 the HTTP status codes.
- The
response
field is now mirrored into the HTTP response code.
- Fixed bug causing a FalseError to be uncatched when using cookie-based sessions.
- Function
file:size
now returnsnull
if the file doesn't exist.
- Fixed parameter requirements and parameter order for the
openssl:create
function.
- Updated WindError to expose 'data' field.
- Fixed behavior of 'throw' to respectfully throw an exception instead of a string.
- Fixed bug in
env:set
function.
- Added escape sequence
\b
to specify ASCII 8. - Added functions
range
,sys:peak-memory
.
- Added
request:error
which returns the last error string. - Support for input, output and progress handlers completed.
- Added
request:input-file
andrequest:output-file
for direct I/O.
- Added stream support with
stream:open
,stream:close
,stream:read
andstream:write
.
- When number/integer format is not provided ".2," will be used by default.
- Added
math:fixed
to round a number to a fixed number of decimals.
- Added
sys:version
which returns the framework's version.
- Added functions
not-zero?
, andnot-in?
. - Function
sys:sleep
now allows fractional (i.e. 0.5) values of seconds.
- Added function
db:debug
to turn on/off tracing on demand.
- Fixed bug in
image:save
causing wrong output format (base64).
- Added function
map:del
to delete a key. - Updated
map:length
to justmap:len
- Added
strings:get
to replace olds
function.
- Fixed bug when using json:dump causing wrong formatting.
- Minor bug fixes
- Functions
inc
anddec
now return the final value. - Fixed minor bug with namespace operator.
- Updated
reply
function in Wind to log errors if content was already flushed and still echo it anyway as well. - Added
shl
andshr
functions for bit shifting. - Fixed bug in parser causing comments to be parsed when inside a string.
- Added
crypto:equals
a timing-attack safe string comparison. - Added
crypto:random-bytes
and removedutils:random-bytes
- Added functions to sign, verify and encrypt using public/private key.
- Improved documentation.
- Added functions
der:parse
,der:get
andder:extract
- Added function
openssl:ciphers
- Normalized names of all functions.
- Added functions
request:response-headers
,request:headers
, andrequest:status
- Added functions
session:load
andsession:save
- Added extra option to all transforming functions (i.e.
math:to-dec
) to specify number of alignment digits. - Added
math:align
function.
- Added support to read/write binary integers from/to a string.
- Added functions
str:uint8
,str:uint16
,str:uint16be
,str:uint32
andstr:uint32be
- Refactored to comply with latest v5 syntax guide.
- Completed documentation of all available functions.
- Removed all deprecated functions.
- Refactored Gateway code and added new functions, see Gateway.
- Added OpenSSL and Cookies extensions.
- Added "Crypto" native extension.
- Added functions
crypto:hashlist
,crypto:hash
,crypto:hash-bin
,crypto:hmac
,crypto:hmac-bin
.
- Added functions
base64u:encode
,base64u:decode
,url-query:stringify
,html-text:encode
,html-text:decode
.
- Marked several functions to be deprecated on next major version, alternatives will be provided when applicable.
- Added support to specify key and value variable names in iterators instead of the default ones. Supported by: for, map, filter, every, some, find, findIndex, reduce, select, mapify, and groupify.
- Deprecated functions
each
,%
,%%
, andvoid
have been removed. - Added function
concat
to concatenate a sequence of values.
- Added
http::status
function, performs a HEAD request and returns the HTTP status code.
- Improved error reporting in all database functions.
- Added
set names utf8mb4
to connection startup code.
- Updated
eval
function to return the last value only. - Function
has
now supports checking for sub-strings, such as (has 'aa' 'aab').
- Added
re::match-first
and markedre::matchFirst
for deprecation. - Added
re::match-all
and markedre::matchAll
for deprecation.
- Patched to ensure property 'method' is always in uppercase.
- Patched bug causing null session object when using on-database session storage and cookie expired.
- Updated
datetime::diff
to always return positive value. - Added
ISO
format option to return string as "YYYY-mm-ddTHH:ii:ss".
- Added JSON class to contain JSON-manipulation methods.
- Updated all classes that used
json_encode
andjson_decode
to use now JSON static methods.
- Added fixup to prevent
lastval
error when callinggetLastInsertId
.
- Updated all methods accepting parameters for prepared statements to allow immediate values instead of just an array.
- Added function
utils::random-bytes
which returns binary data.
- Added fixups to
eval
to ensure comments are removed and only returns the last value. - Added support for
break
andcontinue
to expressionsrepeat
,gather
andloop
. - Updated
repeat
to no longer construct an array, usegather
instead. - Removed support for infinite loop in
gather
expression. - Default case for expression
case
is now justelse
instead ofdefault
, or you can ommit the keyword. - Added support for full code blocks to
repeat
, andgather
.
- Updated documentation.
- Added support for 'break' and 'continue' to 'each' blocks.
- Fixed some bugs related to warnings of precision loss when converting float to int.
- Updated definition of database table.
-
📝 Renamed the following expressions:
Old Name New Name trace::alt trace-alt dir::files:recursive dir::files-recursive dir::dirs:recursive dir::dirs-recursive dir::entries:recursive dir::entries-recursive dir::remove:recursive dir::remove-recursive -
🔻 Removed the following deprecated expressions:
Expression Direct Replacement Alternative array::indexof array::indexOf map::keyof map::keyOf escape db::escape isnotempty - isnotnull isempty - isnull notnull? not-null? notempty? - not-null? not-empty? - not-null? empty? - null? foreach - for expr_debug - -
- Folder
rcore
has been deprecated, contents can be put in the root folder, and configuration files go now in the 'conf' folder.
- Improved error messages to be more consistent.
- Support added to
fn
to allow default parameters. - Fixed bug causing function returning just a native keyword type to throw an error such as
(fn true)
- Added support to allow a rest parameter (in
fn
anddef-fn
), should be prefixed with ampersand:(fn a b &rest)
- Variable
self
available infn
to access the function definer data scope. - Fixed bug that allowed function names to start with underscore, that is now not supported to prevent issues with internal functions.
- Added
(debug::contextId)
returns the current execution context ID. - Added
(get-fn function-name)
returns the reference to the specified function. - Added
(set-fn function-name [function-reference|null])
sets or removes the reference of a function in the root context.
- Fixed bug causing strings such as '003' to be considered a number when it should be a string (prepared statements).
- Fixed bug causing prepared statement to return false when the execution was actually successful.
- Added
std::compare
to compare strings in a C-like fashion. - Added
array::sort
to compare arrays providing a custom comparison block.
- Added support for
head
method using the newhttp::head
expression.
- Active
env
is now available using (config.env) variable.
- Added support for prepared statements (using native $1, $2, etc).
- Method
destroy
now opens the session (shallow) first to ensure it is deleted.
- Using now
SQLSRV_CURSOR_CLIENT_BUFFERED
to speed up queries with client side buffering.
- Added
datetime::millis
to get the current unix timestamp in milliseconds.
- Fixed bug when calling
has
orcontains
with a key starting with at (@).
- Renamed
array::sort:asc
,array::sort:desc
,array::sortl:asc
, andarray::sortl:desc
toarray::sort-asc
,array::sort-desc
,array::sortl-asc
, andarray::sortl-desc
respectively. - Renamed
map::sort:asc
,map::sort:desc
,map::sortk:asc
, andmap::sortk:desc
tomap::sort-asc
,map::sort-desc
,map::sortk-asc
, andmap::sortk-desc
respectively.
- Driver names
mysql
andmysqli
both are now mapping to the same MySQLi driver.
- Updated signature for
query
andreader
to include newparams
parameter used with prepared statements.
- Updated all database drivers to comply with latest changes to Driver.
- Removed deprecated MySQL driver, using now only MySQLi. Driver names
mysql
andmysqli
are now mapped to MySQLi.
- Updated comments to include more descriptive messages and example of expressions.
- Updated functions to allow now parameter
params
for prepared statements.
- Renamed
utils::randstr:base64
toutils::randstr-base64
- Improved
utils::xml::simplify
to remove redundant objects. - Renamed
utils::hash:binary
andutils::hmac:binary
toutils::hash-binary
andutils::hmac-binary
.
- Fixed bug caused by dynamic property
num_fields
. - Method
getLastError
will now attempt to load one if the currentlast_error
is null.
- Fixed minor bug causing warning when calling
utils::html
.
- Started keeping track of CHANGELOG.md to record changes between versions.
- Corrected order of parameters for Regex::_replace to be pattern, replacement and text.
- Patched SQLServer to use Regex class instead of preg_replace.
- Patched Expr to use the correct order of parameters in calls to Regex::_replace.
- Patched Expr to use Text::replace instead of str_replace.
- Expression
utils::unique
now accepts a second optional parameter to specify the 64-byte charset for the code to generate. - Expression
utils::html
now automatically sets content-type to 'text/html'. - Added expression
reduce <iter-var> <init-var> <initial> <array> <expr>
to reduce an array to a single value. - Updated global error handler to display the error in a friendly way when config.Gateway.display_errors is neither false or true.