Skip to content
Isaac Shelton edited this page Feb 24, 2022 · 71 revisions

Adept Programming Language 2.5

Additions from Adept 2.6 are still in the progress of being fully documented

Table of Contents:

Changes since Adept 2.4

Language:

  • Removed using namespace
  • Now supports new macOS M1 chip arm64 architecture
  • Added support for anonymous structs/unions
  • Added support for anonymous structs/unions as unnamed fields
  • Added typenameof $T expression
  • Added embed "filename.txt" expression
  • Added ability to rename idx in repeat loops via using my_idx
  • Added null ubyte literal '\0'ub
  • Added support for chained methods as statements - thing1().thing2().thing3()
  • Completed runtime type information for complex composite types
  • Added new transcendent variables __compiler_major__, __compiler_minor__, __compiler_release__, and __compiler_version_name__
  • Changed __compiler_version__ to be a number instead of a string (__compiler_version_name__ now exists for string version)
  • Added alignof Type expression
  • Package manager now included
  • Lots of bug fixes

Standard Library:

  • Fixed an issue with 2.x/captain.adept on HDPI displays. Solution was back-ported to earlier versions
  • Fixed an issue in 2.4/aabb.adept
  • Added more math definitions in 2.5/cmath.adept
  • Changed 2.5/* to use new typenameof $T expression instead of RTTI when possible
  • Added unix/sys/time.adept
  • Added new helper functions in 2.5/captain.adept
  • Added new method clone(this *<*$P> List) <*$P> List in 2.5/List.adept
  • Added basic JSON parser 2.5/JSON.adept
  • Added more functionality for 2.5/Matrix4f.adept and 2.5/Vector3f.adept
  • Fixed an issue in 2.x/Optional.adept
  • Added stuff to stb/image.adept
  • Added unique pointer type 2.5/Unique.adept
  • Added generic grid data-structure 2.5/Grid.adept
  • Added new user utility functions for 2.5/captain.adept
  • Added native libraries for Mach-O arm64
  • Added experimental WebAssembly target
  • Added new method join(this *<String> List) String to 2.5/parse.adept
  • Added meta variables __arm64__, __x86_64__, and __wasm__
  • Upgraded warning guard in sys/cfloat.adept

Notable changes from Adept 2.3 => Adept 2.4

  • Added namespaces
  • Added initializer lists
  • Added __as__ management function
  • Added ~> operator
  • Added polycount variables $#N
  • Added static variables
  • Added alternative syntax choices
  • Added better syntax for constant expressions
  • Added ability to have scoped constant expressions
  • Added new way to pass variadic arguments using VariadicArray
  • Added function aliases
  • Added --entry and pragma entry_point
  • Added sizeof(value) expression
  • Reduced size of resulting executable
  • Made switch statement cases less picky
  • Added built-in compile-checks for printf(String, args ...)
  • Added simple unions
  • Added polymorph that matches convertable types $~T of $T
  • Added ability to use ++ and -- on floating point types
  • Changed integer values of unspecified type to collapse to type long instead of int
  • Added #define
  • Added cross-compilation for Windows from MacOS
  • Changed warnings to print code fragments
  • Added --short-warnings and pragma short_warnings to disable code fragments for warnings
  • Added #error and #warning
  • Added -Werror and pragma warn_as_error to treat compiler warnings as errors
  • Added null meta value
  • Added --ignore-unused and pragma ignore_unused to ignore unused variable warnings
  • Added prototype REPL
  • Added exhaustive keyword to force switch statements to account for all values of an enum
  • Added ability to specify default argument values
  • Added .size field to AnyType types
  • Added support for C-style variadic arguments via va_start, va_end, va_arg and va_copy
  • Added __access__ management function
  • Added __stdlib__ dynamic compile-time meta variable
  • Added -std=2.5 and pragma default_stdlib to set default standard library
  • Added import my_component syntax to import from the standard library
  • Improved --version human friendliness
  • Added --ignore-* compiler flags and pragma ignore_ pragma directives
  • Improved compilation performance
  • Improved error and warning message format
  • Cross-Compilation from MacOS to Windows with --windows
  • Fix some bugs
Clone this wiki locally