1.0.0-Beta10
August 16, 2024
Last updated
Was this helpful?
August 16, 2024
Last updated
Was this helpful?
BoxLang Betas are released weekly. This is our tenth marker and we are incredibly excited to bring you a very big release. This gives us a huge push forwards towards compatibility with other engines and many more new features we have always wanted in our language. Enjoy!
Ths is a compatibility feature for CFML engines so they can use the queryGetRow()
BIF which internally funnels to the ()
method.
CFML engines always had half baked support for working with INI files. We now have full support and a fluent way to interact with ini
files. This is really important for those building IoT solutions or interacting with micro processor devices. To get started use the boxlang installer install-bx-module bx-ini
or if using CommandBox: install bx-ini
Here is a typical ini file example:
Here are the contributed functions in this module:
getIniFile( file )
: Reads an ini file and returns the IniFile object. If the file does not exist, it will create it.
getProfileSection( iniFile, section )
: Gets a section from the ini file as a struct
getProfileSections( iniFile )
: Gets all the sections from the ini file as a struct of structs
getProfileString( iniFile, section, entry )
: Gets an entry from a section in the ini file, if it does not exist, it will return an empty string
setProfileString( iniFile, section, entry, value )
: Sets an entry in a section in the ini file, if the section does not exist, it will create it
removeProfileSection( iniFile, section )
: Removes a section from the ini file
removeProfileString( iniFile, section, entry )
: Removes an entry from a section in the ini file
The IniFile
object is a fluent object that allows you to work with ini files in a very easy way. Here is an example of how to use it:
This BIF is now complete to provide JavaScript escaping when using BoxLang as the template processor:
We have now finalized XML support in BoxLang with a beautiful xml
component:
These two functions now exist in the compat
module. It allows you to set and get variables in the variables
scope. This can also be used to retrieve dynamic variable names or set dynamic variable names:
Legacy client
scope support added to the compat module
This is an internal method of our contexts to allow us to retrieve things easily with predicates.
We thought this was going to be an easy one. preserveSingleQuotes()
is now built for the core language to assist when building dynamic SQL and escaping quotes smartly.
Our BoxLang runner now allows for the CLI execution of cfm
and cfs
files directly along side BoxLang templates.
This BIF is now in the core thanks to a client migration.
Our web support package gets a new BIF thanks to a client migration
WriteDump in BoxLang now get beautiful labels!
We have a new caster for BigInteger and BigDecimal to help us with precise mathematics in BoxLang.
Our serializer to binary for classes now respects the serialize
annotation on properties.
content component can have body
Enhance error messages for parsing invalid tag code
MalformedInputException: Input length = 1 when parsing CFC
component detection can be tricked if there is a tag comment line starting with the word "component"
Regression: Can't run files via BoxRunner due to new action command logic
Sometimes trying to shutdown runtime throws NPE if it was never started fully
pretty print visitor outputting extra " on tag catch block
pretty print visitor doesn't handle array notation invocation