Releases: dictu-lang/Dictu
v0.31.0
Dictu v0.31.0 Release Notes
New Features
UTF-8 String Support (PR #749)
- Strings are now fully UTF-8 aware.
len()returns the codepoint count instead of byte length. A newbyteLen()method returns the raw byte length. Indexing, slicing, and all string methods (contains,find,findLast,replace,split,upper,lower, etc.) operate on Unicode codepoints correctly. - New
isValidUtf8()string method to check if a string contains valid UTF-8. - Performance optimization: ASCII-only strings bypass multibyte logic.
FFI Callback Support (PR #755)
- Native C modules can now call back into Dictu functions via the new
callFunction()FFI API. This enables event-driven patterns and callbacks from native code into the VM. - FFI API version bumped to 3.
with Statement Custom Variable Names (PR #759)
- The
withstatement now supportsas <name>syntax to assign a custom variable name (e.g.,with open("file.txt") as f { ... }). Nestedwithblocks now work correctly.
Path.isSymbolicLink() (PR #754)
- New method to check if a path is a symbolic link.
Stderr Output Functions (commit 92e0fae)
- New
IO.eprint()andIO.eprintln()functions for writing to stderr.
UnitTest Silent Assertions (PR #762)
- Assertion methods (
assertEquals,assertTruthy, etc.) now accept an optionalsilentparameter to suppress success output, reducing noise in large test suites.
Git Commit Hash in Version String (commit 2202d3a)
- When compiled with git available,
dictu --versionnow includes the commit hash (e.g.,Dictu Version: 0.30.0 [rev: abc1234]).
Bug Fixes
Fix Process.run() Deadlock (PR #753)
- Fixed a deadlock when a child process produced large output. The
waitpid()call is now performed after reading from the pipe instead of before, preventing the pipe buffer from filling up and blocking the child.
Fix System.mkdirAll() (commit 0337e0c)
- Refactored to be UTF-8 aware and removed a 256-byte path buffer limitation.
Fix Path.isDir() Return Value (PR #754)
- Corrected the return value check in the
isDirimplementation.
Fix UUID Length (commits a676173, 218579f)
- Corrected UUID string length to 36 characters.
Improvements
List Sorting Rewrite (PR #761)
sort()now usesqsort()with UTF-8 aware string comparison. Added list comparison tests.
Build System (commit aa86597)
- New CMake
NO_EXEC_RELOCATEoption to disable binary relocation during build.
Documentation
- Multiple documentation fixes: code block language tags corrected (
cs->js), typo fixes, added doc comments forSystem.timeandSystem.platform(PR #758). - Updated file handling docs with
with ... assyntax.
Internal Changes
- FFI module moved out of its own subfolder for cleaner organization.
- Various code reformatting and cleanup.
Release 0.30.0
Release 0.30.0
Change Log
These are all the changes since 0.29.0
- Fix issue with memory counting in HTTP lib #691
- Add dev/null constant #692
- Add Process.kill #696
- Use AS_CSTRING macro #698
- Add HTTP.options #702
- Remove older
Cmodule #703 - Fix issue with interned strings #707
- Remove type in attribute error messages #710
- Fix issue with string subscripting #711
- Add
DICTU_PATHenv var to store things like REPL history #713 - Setup dictu to start looking at
dictu_modules#715 - Add System.rename() #717
- Fix memory issue in REPL #719
- Add string.findLast() #723
- Add isLower / isUpper / wordCount #724
- Add collapseSpaces / wrap #725
- Fix issue with internal dict type #728
- Add set.values() #729
- Add list.sortFunc() #730
- Add Buffer module #731
- Add Object.prettyPrint() #732
- Add dict.toObj() #734
- Fix documentation #735
- Make Err Result falesy #736
- Add FFI module #738
- Allow .pop() / .insert() to take negative indexes #745
- Add System.arch() #746
Release 0.29.0
Release 0.29.0
Change Log
These are all the changes since 0.28.0
- Internal update to how attributes are handled #635
- Unload C module #638
- Ensure all tests are ran #639
- Add less than and greater than comparison operators for string types #640
- Order docs alphabetically #643
- Add new
UnitTest.mock()#644 - Add new Stack module #645
- Range of changes to the Argparse module #648
- Fix a memory issue with annotations #651
- Add new Result.matchError #652
- Add annotation inheritance #654
- Add new List.unique() #655
- Ability to convert a class to dict #656
- Fix type issue with
fgetc#657 - Fixes an internal issue with the Table type by reverting the open addressing scheme #660
- Ability for Abstract types to keep track of Values (ability to grey Values) #661
- Add HTTP.put() #663
- Add the ability to set the timeout for SQLite #668
- Add new Enum.values() #672
- Add HTTP.head() #673
- Add string type to List.sort() #676
- Add new IO module #680
- Move copyFile to IO module #683
- Ability to parse hex values #684
- Add new Net module #686
- Allow annotations to have list / dict types #687
- Docs fixes #688
Release 0.28.0
Release 0.28.0
Change Log
These are all the changes since 0.27.0
- Add System.mkdirAll #607
- Fix issue with upvalues #609
- Fix issue with popping values #613
- Fix windows compilation issue #615, #617
- Add BigInt module #620
- Add Queue module #621
- Add Object.hash() #625
- Class variable / constant annotations #627
- Range of documentation fixes
- Fixed an issue with obj.getAttributes() #635
Release 0.27.0
Release 0.27.0
Change Log
These are all the changes since 0.26.0
- Update HTTP timeout #558
- Add support for shebang in scripts #560
- Resolve an issue with the argparse module #565
- Set follow redirects on by default and add method to httpClient #566
- Update some stdlib modules to latest conventions #571
- Add a new Argparse module to the stdlib #574
- Add UUID module to stdlib #577
- Add some new Datetime constants #579
- Add new
System.copyFilemethod #580 - Updated STATUS_OK const name #583
- Add in method annotations #585
- Update documentation to include more context (e.g return types) #586
- Add
list.splice()method #591 - Add some new Socket constants #595
- Ability to deal with files in binary mode #596
- Win32 fixes + linenoise support on windows #597 #598 #599
- Add optional buffersize to
file.readline#600 - Build docker images on release #602
Release 0.26.0
Release 0.26.0
Change Log
These are all the changes since 0.25.0:
- Update README to include FreeBSD build steps #527
- Add argument unpacking at callsites (spread operator) #528
- Resolve an issue where expressions in the REPL were being printed when it wasn't intended #530
- Add
string.repeat(num)#534 - Add
unameto System module #535 - Add
mkdirTempto System module #536 - Add
set.containsAll()#538 - Add a new builtin Module
Object#539- Object.createFrom
- Object.getClassRef
- Fixed a bug where
breakused within a function defined within a loop would cause a segfault #542 - Add
_nameattribute to classes which returns the class name as a string #543 - Add
Env.clearAll()#544 - Add Dictu proxy server example #545
- Fixed an issue where you could not unpack lists unless declaring the variable #546
- Fixed an issue with imports saving the pathname incorrectly #547
- Add new client to HTTP module #548
- Fix an issue where self referencing datatypes would cause a segfault when attempting to print #549
- Add new
Termmodule #550
Release 0.25.0
Release 0.25.0
Change log
These are all the changes since 0.24.0:
- #514 Add new flags to the UnitTest module
- #517 Add new helper methods to the UnitTest module
- #518 Fix a bug where HTTP headers were not being handled on the stack correctly
- #519 Fix a bug where the VM was not correctly keeping reference to the last imported module
- #520 Add
assertTypeto the UnitTest module - #522 Add the ability to print abstract types
- #524 Add the ability to define variadic functions
New Contributors
Full Changelog: v0.24.0...v0.25.0
Release 0.24.0
Release 0.24.0
Change Log
These are all the changes since 0.23.0
Release 0.23.0
What's Changed
- #471 Re-write of the internals of how the stdlib works along with new
InspectandUnitTestlibraries - #474 Allow inherited class to be based on an expression rather than single identifier
- #475 Add
_classattribute to instances - #480 Fix an issue where
methodswasn't always returning all methods - #482 Add additional Math constants
- #483 Add new
Logmodule to the stdlib - #484 Add new
.getAttributes()to instances - #485 Add more constants to the
HTTPlibrary - #488 Add code of conduct
- #489 Add optional argument to
str.split()to determine split count - #492 Remove
!for logical negation - #495 Add
.chownand.chmodtoSystemmodule - #496 Add
Env.readFile() - #502 Fix compilation error with SQLite amalgamation
New Contributors
- @briandowns made their first contribution in #482
- @gvwilson made their first contribution in #488
- @abeaumont made their first contribution in #502
Full Changelog: v0.22.0...v0.23.0
Release 0.22.0
Release 0.22.0
Change log
These are all the changes since 0.21.0
- Add
list.findIndex()#448 - Allow enums to have a generated value #458
- Require import for the
Systemmodule #460 - Update Math constants to be consistent in their casing, update docs, update debug flag #459
obj.getAttributereturns a bound method rather than a function #461- Add
obj.methods()#462 - Add
dict.merge()#463- NOTE: This functionality has been re-written and now is different to the functionality given when the PR was merged.
- Add the ability to define a default value for
Env.get()#466 - Add
Result.matchWrap()#470