Features in this release

Constructors

Core Standard Library Array Methods String Methods

bang! operator

Better Imports

Performance Gains

Documentation

Tests

Constructors

It is the block run on creation of a new object It contains all methods that belong to that object

Core Standard Library

Array Methods

String Methods

Bang! Operator

Better Imports

Performance Gains

Documentation

Tests

Final Thoughts

After 4 months of development, version 2.5 of the blz open source programming language is out now!Source code is available on GitHub Check out the wiki to for installation instructions.Constructors are one of the two big features in the 2.5 release.Constructors are how Object Oriented Programming is done in blz, there is no concept of classes.Instead the constructor serves two purposes:Here's an exampleOne of the core goals of blz is to enable developer velocity.These constructors achieve that by eliminating boilerplate and by capturing parameters in an intuitive fashion.The other big feature in blz 2.5 is the expansion of the core standard library.A big part of this is enabling primitive values (strings, arrays, numbers, etc.) to have methods.That means that statements like `[2, 5, 3, 1]\text{.sort}()` are now possible.Many, many array methods were introduced in this update.Some examples include: copy, sort, filter, each, map, unique, slice, fold_left, contains?There are many more, and you can read the full list on the GitHub wiki Many, many string methods were also introduced in this update.Some examples include: length, to_array, trim, sliceThere are more, and you can read the full list on the GitHub wiki The bang! operator was introduced to give the programmers more control over the language's behavior.Most languages either pass function arguments by value or by reference.It is usually determined by the language in advance, and you've got to work with whatever the language does.blz passes function arguments by value, unless you use the bang! operator. Use of ! allows for pass by reference.For example:A full description of the bang! operator is available on the GitHub wiki blz 2.5 introduces the 'require' import statement.It is used to import source files using a relative path.blz 2.5 also fixes an issue where a source file could be loaded more than once.blz 2.5 boasts some modest performance improvements.Startup times have decreased ~10%.Runtime speed has improved. My benchmark of calculating 2000 primes has speed up ~60%.The GitHub wiki for the project now has lots of good references for the language.We are looking to expand this over time, but it's a good start for this release.blz has two kinds of tests. JUnit tests and blz tests. JUnit tests have increased from ~140 to ~180. This is still too low, and I will be looking to add more at every opportunity. blz tests have also increased, with most core library functions having several tests.This is the most exciting release of blz yet!There is still lots of work to be done, but blz is evolving at a rapid pace, and is moving in a great direction.The language has also become a lot more focused on the goals of developer velocity and intuitive features.Looking to the future, there are many things ahead for the language.One direction being explored is taking advantage of Truffle and the GraalVM to get a JIT compiler for blz.Expect lots of libraries related to system calls as well.There are currently not many great ways to talk to input / output devices in the language. I'm looking to change that soon.Thanks for reading, and I'll see you for blz 2.6!