Skip to content
Switch branches/tags


daScript - high-performance statically strong typed scripting language

Win64 build status Build status
Linux build status Build status
macOS build status Build status


  • hardware breakpoints are now supported on mac arm64
  • linux build is functional again


  • better parallel build with msvc under vscode and all around
  • we can now generate xcode projects again

11/24/2021 - 0.3 tag

  • hash is now 64 bit function just about anywhere in daScript


  • reuse allocator - things work a lot faster when enabled vs crt


  • daScript parallel compilation cleanup - daScript parallel compilation
  • siginificant memory and performance optimizations
  • bugfix - desc query(eid) to be r\w


  • daScript parser cleanup - its now reentrant


  • logger - log handling, log levels, all that jazz
  • safebox container with hashes - can add and iterate


  • minfft and sound modules merged in
  • feature - assume keyword


  • checking locked containers all around move
  • OpenGL3+ bindings for IMGUI


  • OpenGL is now up and running on OSX via binder
  • debugger now has decent eval


  • better BGFX integration on OSX
  • dasAOT and dasContDev discontinued. use daScript for everything now
  • we now build our own GLFW


  • archive and serialization is up and running


  • HW breakpoints on PC
  • DECS state debugger
  • vulkan and related infrastructure temporarily removed


  • local ref is unsafe
  • clang bind started


  • lambda now captures const ref fine
  • find_query in DECS


  • daScript now starts debugger automagically
  • DECS can now serialize
  • apply now works with misc types like variant and tuple


  • DECS tests


  • general language tests (found missing %= operator )
  • JIT tests
  • ZYDIS disassembly hooked


  • dasbind - we can now dynamically load libraries and bind functions


  • classes can now be sealed
  • member functions and variables can now be private


  • file access roots
  • unit test framework is now merged in


  • self keyword no longer necessary when calling class methods


  • DECS now supports full-blown types (not just raw pod)


  • XBYAK hooked up for inline assembly GENERATOR
  • operator := and operator delete (clone and finalize aliases)
  • more overrideable operators (like [], ?[], ., ?., etc)




  • geometry generation shared between OpenGL and BGFX
  • shader bindings now generate their own names
  • defaults and semantics inferred in GLSL


  • BGFX - cleaner shader bindings
  • BGFX - matrices are now uploaded with proper transpose


  • BGFX - compute shaders
  • support for const functions
  • default arguments now work in class methods


  • BGFX - declarations, macros, etc


  • popen - we can now run external process safely


  • BGFX - module introduced


  • das_string vs string - lots of nice operators for comparison etc
  • live context loopback


  • math libraries unification (look_at etc matrices)


  • LANGUAGE CHANGE - bitfields are now strongish type. i.e bitfield vs bitfield<...>
  • misc - massive cleanup of variable lookup. solid_context
  • misc - more macro cleanup
  • bug fixed - mat3x3 math is no longer broken
  • decs - find_query, query - harmonized, lookups, bugs fixed
  • live - now supports persistent desc data


  • api change - aot is now part of CodeOfPolicies, not linkCppAot
  • misc - massive memory clenaup more compact debug info Func now stored pointer to a function GetGlobal and GetLocal are doing MNH for now MNH tables of all sorts are now regular hash_map, vs O(1) with really low capacity to be replaced by more efficient O(1) hash at some point code is now compacted for both interpreted and AOT scenarios unused code is thrown away in aot
  • misc - tones of new memory logging
  • feature - [macro_function] and [macro_interface]. to be thrown away from shared modules and such
  • misc - concept cleanup. module will no longer 'run'. init scripts at compilation time will only be called from non-modules macro scripts, however, will continue running
  • notes - attempts are shared code showed that keeping full blown (or even stripped) module is not viable


  • feature - global_lint_macro - those happen reqardless of the visibility
  • FEATURE - LINT - daslib/lint for details. all 'i can catch it during compilation' stuff goes there.
  • misc - desc is now GC-friendly
  • feature - daslib/live started. it should handle live reloading, update, cross context in raw das live controls
  • bug fixed - annotationDataSid conflicts with SimNode_NOP, when empty
  • bug fixed - move of local nonRef types in strange instances no longer causes internal compiler error

What's new


  • FEATURE - DECS - which is daScript ECS. see daslib/decs and daslib/decs_boost for details. decs_test.das in examples. upcomming is separate context for ecs memory
  • feature - typedecl can now be a one-liner
  • misc - empty block now produces SimNode_NOP vs SimNode_Block with nothing. its way faster and less memory
  • feature - options log_symbol_use will report all used symbols with links on how they got used
  • feature - block macro is now bound to das
  • feature - many pass macros (lint, infer, dirty_infer, optimization) are now bound to das
  • feature - Expr as, Expr is, Expr ?is for ExpressionPtr
  • misc - better documentation. arguments names for just about everything
  • misc - significantly better binding error reporting. experimental is automatic lib.addModule(requre()) if it can be deduced from all modules.
  • greyprint - better preview


  • bug fixed - integer vector division and modulo operations now cause proper 'division by zero' exceptions. unused components of the vector no longer cause said exceptions.


  • misc - float3x3 matrix type introduced. basic operations provided.


  • bug fixed - value[] arrays were considered value types due to the bug. additional cleanup of 'isSimpleType' function without arguments, which was only used in the dereferencing test.
  • bug fixed - numbers which look like octal in C++ were not parsing correctly. a = 08 was parsing as 0. now its 8.
  • feature - TypeInfo and StructInfo now contain two new flags (flag_heapGC and flag_stringHeapGC). GC uses those flags to disable walking specific data types. This has overall positive effect on performance, mainly for the arrays.
  • misc - bind_vertex_buffer no longer takes vbo, and takes an extra pointer instead.


  • stb_truetupe integrated. opengl_ttf wrapper under dasGlfw helps with rendering as well (see 06_hello_ttf example)


  • readme started somewhere around 'have functional GC'
  • lint - top level no-side-effect operator based expressions are now prohibited, i.e a == b is now a compilation error
  • bug fixed - if exception occurs during 'invoke_in_context', it will be forwarded to the original context