Skip to content

Releases: plume-lang/plume

Plume 0.9.4

29 Aug 16:42
Compare
Choose a tag to compare
Plume 0.9.4 Pre-release
Pre-release

Minor version to revert some new features that caused bugs with interfaces. Implying that str yet becomes a concrete type instead of just being a type synonym for list<char>. Planning on adding some standard functions to easily convert to iterable.

Full Changelog: 0.9.3...0.9.4

Plume 0.9.3

08 Aug 09:03
Compare
Choose a tag to compare
Plume 0.9.3 Pre-release
Pre-release

This version brings possibility to express extension priority. This is useful for overlapping some extensions.

This just results in sorting extensions when resolving them.

Full Changelog: 0.9.2...0.9.3

Plume 0.9.2

07 Aug 19:37
Compare
Choose a tag to compare
Plume 0.9.2 Pre-release
Pre-release

This Plume version brings fixes to compiler issues, especially in ANF conversion.

Compiler was using desugarANF instead of desugarExpr for desugaring with declarations (mut declarations included too).

Full Changelog: 0.9.1...0.9.2

Plume 0.9.1

06 Aug 15:59
Compare
Choose a tag to compare
Plume 0.9.1 Pre-release
Pre-release

This new minor version brings fixes to existing features and introduces asynchronous inference:

  • Prelude is now imported according to the backend (std:prelude-js for JavaScript backend, and std:prelude for native one).
  • Asynchronous calls are now partially inferred (in ambiguous cases, the async keyword helps to resolve most of the issues).

Before

test = await read_file("my-file.plm")
println(test)

After

test = read_file("my-file.plm")
println(test)

Full Changelog: 0.9.0...0.9.1

Plume 0.9.0

04 Aug 16:48
d10914c
Compare
Choose a tag to compare
Plume 0.9.0 Pre-release
Pre-release

This new major Plume version brings some new exciting features, such as a correct module resolution (letting the compiler throw errors when external variables shouldn't be used in modules), support for functional dependencies, enabling new possibilities for instance with the indexable interface:

interface<T, A> indexable<T, A> with T => A {
  fn get_index(xs: T, idx: int): Option<A>
}

Here with T => A means that from type T, we may deduce type A. There is also a new while statement for building loops easily. However, they lack support for control flow statements such as break and continue.

What's Changed

Full Changelog: 0.8.0...0.9.0

Plume 0.8.0

11 Jun 18:12
90df162
Compare
Choose a tag to compare
Plume 0.8.0 Pre-release
Pre-release

This new Plume version brings a brand-new backend, replacing the existing one temporarily. This backend enables compiling Plume code to JavaScript.

Plume includes obviously new features related to asynchronous development: this new version introduces async data-type and await expression.

What's Changed

Full Changelog: 0.7.4...0.8.0

Plume 0.7.4

26 May 08:27
Compare
Choose a tag to compare
Plume 0.7.4 Pre-release
Pre-release

This new Plume minor version should try to fix an issue with the GetDirname function on Windows systems.

Full Changelog: 0.7.3...0.7.4

Plume 0.7.3

26 May 07:33
Compare
Choose a tag to compare
Plume 0.7.3 Pre-release
Pre-release

This version brings little fixes for the extension resolution system and some fixes in the runtime with equal comparison (causing string pattern matching to fail).

What's Changed

  • Improved and added some documentation in the codebase by @sisypheus-dev in #25

Full Changelog: 0.7.2...0.7.3

Plume 0.7.2

23 May 09:20
63bf0d8
Compare
Choose a tag to compare
Plume 0.7.2 Pre-release
Pre-release

Major fixes are brought with this new version such as extensions and interface fixes. Also seems to fix closure conversion

What's Changed

  • Feat/memory by @sisypheus-dev in #23
  • Fixed closure conversion by @sisypheus-dev in #24

Full Changelog: 0.7.1...0.7.2

Plume 0.7.1

18 May 10:51
Compare
Choose a tag to compare
Plume 0.7.1 Pre-release
Pre-release

Return security

Plume now has a security test for missing returns in blocks of expressions, meaning you can no longer write a function without specifying a return value in its body. However, this still does not include conditional exhaustiveness, so this Plume version might not cover any missing return cases.

The following code throws an error:

fn welcome(name: str): int {
  println("Hello $name!")
}

Because welcome should return an integer but returns nothing

Extension critical issue

This version also brings a fix for extension discharging: extension constraints were discharged in a non-correct order, leading to misplacement issues with instance dictionaries.

Discharging is the step where for instance equality<(A, B)> is discharged into equality<A>, and equality<B>, to check if these extensions exist too or to create a new instance dictionary.

Full Changelog: 0.7...0.7.1