Skip to content

v0.9.9.9.9.9.9.9.9

Compare
Choose a tag to compare
@TodePond TodePond released this 09 Apr 11:04
· 396 commits to main since this release

We are unhappy to announce the un-launch of DreamBerd back into beta.
To explain our reasoning for this, please read this comment from our founder:

As of 2023, the DreamBerd compiler is no longer functional due to the language being too advanced for the current state of AI. We will endeavor to get DreamBerd back into a functional state as soon as we can.

This release also brings a whole bunch of empowering new changes. Please read on for the full notes.

Buff: Logo

  • Our logo is now blue. Many thanks to @tetra-coder for the contribution.

Nerf: Loops

  • Loops have been removed from the language.

Developer Comment
Loops are a complicated relic of archaic programming languages. We had no option but to remove them.

Buff: Strings

We refined our string syntax!

Strings can be declared with single quotes or double quotes.

const const name = 'Lu'!
const const name = "Luke"!

They can also be declared with triple quotes.

const const name = '''Lu'''!
const const name = "'Lu'"!

In fact, you can use any number of quotes.

const const name = """"Luke""""!

Even zero.

const const name = Luke!

New Feature: Immutable Data

Mutable data is an anti-pattern. Use the const const const keyword to make a constant constant constant. Its value will become constant and immutable, and will never change. Please be careful with this keyword, as it is very powerful, and will affect all users globally forever.

const const const pi = 3.14!

New Feature: Lifetimes

DreamBerd has a built-in garbage collector that will automatically clean up unused variables. However, if you want to be extra careful, you can now specify a lifetime for a variable, with a variety of units.

const const name<2> = "Luke"! //lasts for two lines
const const name<20s> = "Luke"! //lasts for 20 seconds

By default, a variable will last until the end of the program. But you can make it last in between program-runs by specifying a longer lifetime.

const const name<Infinity> = "Luke"! //lasts forever

Variable hoisting can be achieved with this neat trick. Specify a negative lifetime to make a variable exist before its creation, and disappear after its creation.

print(name)! //Luke
const const name<-1> = "Luke"!

New Feature: Significant Whitespace

DreamBerd uses significant whitespace. Use spacing to specify the order of arithmetic operations.

print(1 + 2*3)! //7
print(1+2 * 3)! //9