The Vale Programming Language

Vale is currently version 0.1: it's now a working prototype.

We're currently 10% of the way to version 0.2!

  • Done
  • Planned for v0.2
  • Planned for Later

References

  • Immutables' Refs
  • Owning Refs
  • Moving
  • Constraint Refs
  • Weak Refs
  • Expect
  • Optional Sugar
  • Inlining
  • Varying/Final

Functions

  • UFCS
  • Infix Calling
  • Lambdas
  • Magic Params
  • Abstract Functions
  • Virtual Functions
  • Extern Calls
  • Overloads
  • Must-use

Generics

  • Functions
  • Structs/Interfaces
  • Virtual Generics
  • Const Generics
  • Static Eaching
  • Metaprogramming
  • Concepts

Arrays

  • Mutability
  • Known-size
  • Unknown-size
  • Asterisk for Arrays

ADTs

  • Tuples
  • Variants
  • Variant Indexing
  • Errors

Structs

  • Mutability
  • Auto-drop
  • Member constructing
  • Explicit auto-drop
  • constructor<T>
  • Destructor Parameters
  • Shortcalling

Interfaces

  • Mutability
  • Open Constructors
  • Open Shortcalling
  • Sealed Constructors
  • Sealed Shortcalling

Constructs

  • If
  • While
  • Each
  • Match
  • EachI
  • If Let
  • If Let Else
  • Break, Continue

Patterns

  • Locals
  • Destructuring
  • Equating
  • Extractors

Operators

  • Short-circuiting
  • Map, FlatMap
  • Bail

Standard Library

  • Optional
  • List
  • HashMap
  • Set
  • HashSet
  • Bunch

LLVM Codegen

  • Native Executables
  • Resilient Mode
  • Continue on panic
  • Constraint Modes
  • Threading
  • Replayability

Regions

  • Basics
  • Read-only Regions
  • Mutexes
  • Transmigrating
  • Seceding

Optimization

  • Generational Memory
  • Gen-check Elimination
  • Hybrid-Generational Memory

Ergonomics

  • Compile Errors
  • Syntax Highlighting

Possibilities

  • Self-Hosting
  • JVM/CLR Backend
  • VS/IDEA Plugins