Skip to content

Releases: dictu-lang/Dictu

v0.31.0

12 Feb 20:04

Choose a tag to compare

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 new byteLen() 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 with statement now supports as <name> syntax to assign a custom variable name (e.g., with open("file.txt") as f { ... }). Nested with blocks 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() and IO.eprintln() functions for writing to stderr.

UnitTest Silent Assertions (PR #762)

  • Assertion methods (assertEquals, assertTruthy, etc.) now accept an optional silent parameter to suppress success output, reducing noise in large test suites.

Git Commit Hash in Version String (commit 2202d3a)

  • When compiled with git available, dictu --version now 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 isDir implementation.

Fix UUID Length (commits a676173, 218579f)

  • Corrected UUID string length to 36 characters.

Improvements

List Sorting Rewrite (PR #761)

  • sort() now uses qsort() with UTF-8 aware string comparison. Added list comparison tests.

Build System (commit aa86597)

  • New CMake NO_EXEC_RELOCATE option to disable binary relocation during build.

Documentation

  • Multiple documentation fixes: code block language tags corrected (cs -> js), typo fixes, added doc comments for System.time and System.platform (PR #758).
  • Updated file handling docs with with ... as syntax.

Internal Changes

  • FFI module moved out of its own subfolder for cleaner organization.
  • Various code reformatting and cleanup.

Release 0.30.0

12 Sep 18:56
2ced8e7

Choose a tag to compare

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 C module #703
  • Fix issue with interned strings #707
  • Remove type in attribute error messages #710
  • Fix issue with string subscripting #711
  • Add DICTU_PATH env 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

01 Nov 01:12

Choose a tag to compare

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

20 Aug 21:00
5ff841d

Choose a tag to compare

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

18 Feb 20:26
b1d9c25

Choose a tag to compare

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.copyFile method #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

08 Nov 20:58
ef66697

Choose a tag to compare

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 uname to System module #535
  • Add mkdirTemp to System module #536
  • Add set.containsAll() #538
  • Add a new builtin Module Object #539
    • Object.createFrom
    • Object.getClassRef
  • Fixed a bug where break used within a function defined within a loop would cause a segfault #542
  • Add _name attribute 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 Term module #550

Release 0.25.0

18 May 18:46
109d93a

Choose a tag to compare

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 assertType to 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

06 Mar 12:38
af99968

Choose a tag to compare

Release 0.24.0

Change Log

These are all the changes since 0.23.0

  • #410 Add new switch statement
  • #500 Add openweathermap example
  • #501 Add structured logger example
  • #504 Add template engine example
  • #510 Add class constants
  • #512 Change response from the HTTP lib to be a Response object rather than a dictionary

Release 0.23.0

29 Dec 21:08
4381290

Choose a tag to compare

What's Changed

  • #471 Re-write of the internals of how the stdlib works along with new Inspect and UnitTest libraries
  • #474 Allow inherited class to be based on an expression rather than single identifier
  • #475 Add _class attribute to instances
  • #480 Fix an issue where methods wasn't always returning all methods
  • #482 Add additional Math constants
  • #483 Add new Log module to the stdlib
  • #484 Add new .getAttributes() to instances
  • #485 Add more constants to the HTTP library
  • #488 Add code of conduct
  • #489 Add optional argument to str.split() to determine split count
  • #492 Remove ! for logical negation
  • #495 Add .chown and .chmod to System module
  • #496 Add Env.readFile()
  • #502 Fix compilation error with SQLite amalgamation

New Contributors

Full Changelog: v0.22.0...v0.23.0

Release 0.22.0

24 Oct 22:23
1195662

Choose a tag to compare

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 System module #460
  • Update Math constants to be consistent in their casing, update docs, update debug flag #459
  • obj.getAttribute returns 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