Nothing makes me happier than pushing out a great new release to our users and 26.6.4 is a good one!
Firstly, we fixed all reported bugs (23 squashed).
Secondly, we added 15 new features, some small, some pretty profound. Lets take a look at some of the important ones.
Namespaces
ObjoBasic now supports explicit namespaces using Namespace ... End Namespace. Namespaces are compile-time labels, so they organise code without creating runtime objects. The main benefit is practical: two classes, interfaces, enums, or modules can now share the same short name as long as their fully qualified names differ.
Namespace Desktop
Class Thing
End Class
End Namespace
Namespace Web
Class Thing
End Class
End Namespace
Var a As Desktop.Thing = New Desktop.Thing()
Var b As Web.Thing = New Web.Thing()
To add a class or module to a namespace, enter the namespace in the inspector for that class or module. That’s it!
ZipWriter
The existing high-level Zip API remains, but 26.6.4 adds ZipWriter for cases where archive layout matters. You can add files, folders, text, and bytes in a precise order, choose compression per entry, and safely reject duplicate or unsafe archive paths.
This is especially useful for standards-based ZIP containers such as EPUB, where entries like mimetype must be written first and uncompressed.
Markdown Method Descriptions
Method descriptions in Studio now support Markdown, and hover tooltips render those descriptions directly in the editor. That means descriptions can include emphasis, lists, inline code, and code blocks while signatures remain clean and readable.
Class Indexers
User-defined classes can now take part in bracket indexing syntax by implementing Operator_Subscript(). Indexers can be readable, writable, overloaded by parameter type, and can accept multiple index arguments.
Class Row
Function Operator_Subscript(name As String) As String
Return "value"
End Function
Sub Operator_Subscript(name As String, Assigns value As String)
# Store value.
End Sub
End Class
row["Status"] = "Open"
Print(row["Status"])
Subscript operator overloading.
Ternary If
ObjoBasic now has an expression-level conditional:
Var status As String = If(age >= 18, "Adult", "Child")
Unlike a normal function call, this short-circuits: only the selected result expression is evaluated. It is ideal for compact value selection while keeping block If...Then...Else available for more complex control flow.
You can download the new release right now. You can read the full changelog for all changes.

