Changelog v0.30.9
Features
- optimization of expression is now working 😵💫
- enable emitting aspects without arguments into module
- handle deoptimization flag
- reduce size of veinc, ishtar, rune 🙄
- ctrl+c now shuts down ishtar after killing rune 😫
- improvements feature of rune test (parallel test, etc) 🤑
- shutdown and connect method for sockets
Bug Fixes
- fix incorrect usage of realloc
- added missed STLOC_5, LDLOC_5 🤯
- fix modulo operation opcode
- support dump object to file
- upgrade upstream of spectre.console
- fix console flickering when using progress in rune and compiler
- fix string bindings methods
- handle void, none and undefined in LOCINIT_X opcode
- linux and x86_x64 mac os now disable for releases delivery 😍
Changelog v0.30.7
- Features
- feature: primitive LSP
- add workload get-tool
- rework Socket support
- add string,getSize, string.copyTo
- Bug Fixes
- imrovements of Dns.resolve
- fix missing directives ast tranform
- add success\failed status of rune run
- fix compilation in rune run
- set novid in run and sys commands
- fix SVA validator
- fix coloring in project finder
Changelog v0.30.6
- Bug Fixes
- fixed incorrect dispose of telemetry handler
- fixed incorrect sentry dns
- improvement of display position of token
- added
--display-diagnostic-trace
for rune build - fixed not escaped path to wll in rune run
- fixed incorrect fusce binary expression and determination overloading methods of operators
- added get_top_frame_name native method
- added print_any
- added missed string.format binging's
- fixed crash ishtar when calling method defined in system predefined types
- added ability of override entry point method
- added rune test
- rune new how installing latest std into created project
- added Assert class into std for define test cases and asserting
Changelog v0.30.5
- Bug Fixes
- fix runtime incorrect reader module of type
- expose partial boot.ini settings to run cmd
- set 4 as default size threadpool
- fix write ir output
- fix failed stop threadpool threads after vm stop
- redirect error stdout when calling vm in rune cli
- use libuv thread spawn
- add bybass root option in install script
Changelog v0.30.4
Bug Fixes
- fix ishtar console output
- fix progression of installing packages
- restore telemetry options
Bug Fixes
- fix runtime incorrect reader module of type
- expose partial boot.ini settings to run cmd
- set 4 as default size threadpool
- fix write ir output
- fix failed stop threadpool threads after vm stop
- redirect error stdout when calling vm in rune cli
- use libuv thread spawn
- add bybass root option in install script
Changelog v0.30.3
- Bug Fixes
- fix handle fork process of vein compiler and runtime executer
- fix failing when install workload with already installed dependency
- fix locked ishtar process when called it from rune
- fix duplication of env in install script
- fix std incorrect bindings
Changelog v0.30
Big Features
- Initial Support Generic types
- Rune CLI (unified tool for control vein projects, add packages, install workloads and other)
- Type Aliases
- BoehmGC
- LLVM Glue code generator (for FFI and other platform specific code)
- Workloads (delivery of the compiler and runtime and other packages)
- nameof, typeof, as, is preprocessors
- function closure references
- initial await\async support
- libuv for async\file\network io
- threading support
- New in std: sockets, files, regex and other...
- python workload (only for windows x64 and arm64)
- vein runtime workload
- vein compuler workload
- llvm workload
- Socket server
Known issues
- Emit opcode resulted in an invalid buffer size value.
- Socket fault when connection broken
New Features
- Enhanced
AppConfig
andIshtarObject
structures for better configuration and data manipulation. - Added a new
IshtarWatchDog
struct for improved error handling within the virtual machine context. - Enhanced parsing capabilities for alias declarations, allowing optional generic type definitions.
- Improved class declaration handling, now supporting generics in class names and members.
- Introduced progress reporting for asynchronous commands in the CLI framework.
- Added new methods for enhanced string and file handling.
- New properties and methods for managing generics within type expressions.
- Implemented command-line interface for project compilation and workload management, including installation, update, and uninstallation commands.
- Added logging features for compilation events.
- Introduced a command-line interface for project compilation, allowing users to manage and execute builds effectively.
- Added structured logging for compilation events, enhancing error tracking and reporting.
- Implemented a shard registry interface for querying and managing shard packages.
- Added resource management for font and license files, improving accessibility.
- Introduced a comprehensive specification for extension types in the Vein Language, enhancing the ability to augment existing types with new functionality.
- Defined two forms of extension declarations: explicit and implicit, detailing their syntax and usage.
- Provided guidelines for implementing methods, properties, and events within extensions, improving code maintainability.
- Introduced advanced thread management functionality, including creating, starting, sleeping, and joining threads.
- Added job management features, such as starting, completing, canceling, and waiting for job status.
- Added a method for obtaining empty lists in the parser, enhancing list handling.
- Introduced new parsers for ethereal function expressions to improve expression handling.
- Introduced debug console interface for enhanced visibility into application state and outputs.
- Added shared debug data management with state setting, output queues, and formatting.
- Added
TYPE_NULL
to theVeinTypeCode
enum. - Introduced new opcodes
LDFN
andCALL_SP
for method handling. - Added new memory allocation methods
AllocRawValue
andFreeRawValue
in the Ishtar Garbage Collector. - Introduced structures
rawval_union
,VeinRawCode
, andrawval
for advanced memory management. - Consolidated
print
method in theOut
class into a single generic method for increased flexibility. - Added new opcodes
CALL_SP
andLDFN
for enhanced operation handling. - Introduced methods for improved function class compatibility checks.
- Added functionality to create and manage function multicast groups.
- Introduced support for alias declarations, including global flags, alias names, and associated types or methods.
- Added methods for better handling and parsing of compilation units like comments, directives, aliases, aspects, and classes.
- Introduced wrapper for libuv, providing bindings for various functions including thread creation and event loop management.
- Added thread-safe
NativeConcurrentDictionary
andNativeQueue
implementations. - Introduced
IshtarRawThread
,IshtarTask
,IshtarThread
,IshtarThreading
, andTaskScheduler
for advanced threading and task management. - Introduced LLVM-based Just-In-Time (JIT) compilation for FFI glue code.
- Enhanced error messages to include the full path of the project file when not found.
- Introduced support for
NO_CONSOLE
environment variable to disable console output. - Introduced comprehensive ECMA Specifications for the Vein Language, covering Identifier Expressions, Expressions and Blocks, Method Parameter Parsing, Binary Literals, General Literal Expressions, Statement Syntax, String Literals, and Type Alias Declarations.
- Enhanced parsing capabilities for various literal types, expressions, and statements in the Vein Language.
- Added parsing rules for new constructs like binary literals, type suffixes, and advanced expressions.
- Introduced a variety of new classes and structs representing fundamental data types and functionality in the
vein/lang
namespace, includingQuaternion
,Boolean
,Char
,Decimal
,Double
,Float
,Guid
,Half
,Int16
,Int32
,Int64
,Math
,Object
,Out
,Range
,String
,StringBuilder
,Testable
, andThread
. - Enhanced threading operations and introduced new ways to interact with the OS.
- Introduced reflection capabilities with the new
Field
class for accessing and manipulating field information of objects. - Introduced a new option
DisableOptimization
for compile commands. - Introduced support for parsing and handling
for
loop statements. - Added a new class
ForStatementSyntax
for representingfor
loops in the syntax tree. - Introduced a new opcode
CALL_V
for abstract and virtual method calls. - Enhanced error handling with new validation checks for method execution.
- Threading Pool
- Enhanced
Improvements
- Transitioned
VirtualMachine
from a class to a struct for better performance. - Improved pointer handling and memory management across various classes.
- Enhanced type safety within expression parsing.
- Updated constructors and properties for better argument management in invocation expressions.
- Refactored error handling and logging to use more detailed file information.
- Enhanced scope management with controlled scope creation.
- Improved code readability and efficiency in multiple methods.
- Updated type determination logic for unary expressions.
- Enhanced equality comparisons and conditional jumps in the virtual machine.
- Enhanced exception messages in
ConvertNotSupportedException
by using template strings. - Refined type compatibility checks across multiple runtime components to support generic types.
- Simplified method and field type handling by switching to a unified
VeinComplexType
. - Enhanced compatibility checks with additional parameters and improved argument handling.
- Improved argument validation and exception handling logic in virtual machine methods.
- Added new boolean property
DisableValidationInvocationArgs
for flexible validation control. - Enhanced debugging in thread execution methods.
- Added thread and job equality comparison methods for better management.
- Added new opcode mappings and updated existing ones for improved operation handling.
- Modified thread and job creation methods to include name parameters for better identification.
- Updated method signatures for improved parameter handling and performance.
- Enhanced debug output and logging throughout various components for better traceability.
- Added project references and configurations to support new debugging features.
- Removed the
global::
prefix from various namespace references across multiple files to simplify namespace handling and improve code readability. - Improved exception handling with detailed logging.
- Enhanced parsing logic for property, method, and constructor declarations.
- Refined and reorganized code for better readability and maintainability.
- Updated parsing rules for float, integer, boolean, and null literals.
- Improved parsing logic for control flow statements such as
if
,for
,foreach
,while
,return
,fail
, anddelete
. - Improved
IfStatementSyntax
to support nullableElseStatement
. - Enhanced
LocalVariableDeclaration
to implementIAdvancedPositionAware
. - Added
Async
flag to method options, expanding method flag capabilities. - Added multiple new methods and structs for thread and memory management in garbage collection.
- Transitioned
Documentation
- Updated the required version of
dotnet
to8.0
for building on both Windows and Linux. - Added
libgc-dev
as a required package for building on Linux. - Enhanced comments and documentation within the code for better clarity and understanding of new features and changes.
- Restructured content layout in the README.
- Aligned images and links for better readability.
- Added a new section with website links.
- Modified the introductory text about the Vein programming language.
- Updated method and property signatures across various classes for clarity and consistency.
- Enhanced comments and descriptions for better clarity in opcode definitions.
- Updated documentation to reflect new features and usage instructions for the CLI commands and type parsing.
- Added
licenses.txt
for various open-source licenses. - Included a detailed
launchSettings.json
for CLI execution profiles.
- Updated the required version of
Bug Fixes
- Enhanced robustness by adding null checks in memory management routines.
- Improved error handling in various parsing methods to prevent runtime exceptions.
- Streamlined initialization processes to improve clarity and functionality.
- Updated test execution paths for better compatibility.
- Corrected handling of post-increment assignments in expressions.
- Adjusted
OutputEncoding
for Windows to ensure correct display of characters. - Fixed position handling in various syntax elements to ensure accurate parsing and error reporting.
- Enhanced error logging for conflicts in declaration generic types.
- Addressed null handling in
UnBoxing
method to prevent runtime errors. - Adjusted string construction in several methods to ensure correct namespace resolution without the
global::
prefix. - Improved exception handling and user interaction in virtual machine halt and debug methods.
- Corrected parsing logic for array initializers and variable initializers.
- Improved asynchronous handling of stream disposal in the
VerifySign
method. - Fixed method signature inconsistencies and improved error detection/handling.
- Ensured
app.vein
content is only written ifDryRun
is false inNewCommand
. - Improved variable access handling in various scope-related methods.
- Removed outdated and commented-out methods to improve code clarity and maintenance.
- Improved type handling and validation for generic types in field generation.
- Improved robustness with fast-fail assertions to prevent executing abstract methods.
- Updated method flag assignments to accurately reflect abstract methods.
- Fix typo in converting method flags from ast, (virtual -> virtual, abstract -> abstract)
Refactor
- Streamlined class definitions and constructor initializations for clarity and maintainability.
- Changed data structures to enhance type safety and simplify interactions.
- Replaced hardcoded method names with constants for better maintainability.
- Streamlined compatibility checking methods for improved performance.
- Updated syntax classes to include positioning methods.
- Reformatted initialization of properties and method signatures for clarity.
- Updated various method signatures to use pointers for
CallFrame
parameters across multiple files. - Changed
IshtarTrace
from a class to a struct and removed its constructor. - Refactored
CallFrame
creation and exception handling inProgram.cs
. - Integrated external link functionality into the
AsNative
method for cleaner code. - Replaced print statements with a centralized logging method for better maintainability.
Chores
- Added new project configuration for .NET 8.0, including necessary package references.
- Removed outdated package references and added new project references to streamline dependencies.
- Restructured project dependencies to enhance build efficiency.
- Created configuration profiles for running the CLI application.
- Modified debugging methods to be conditional on debug builds.
- Updated methods to replace console output with debug trace printing.
- Updated import statements and namespace references in scripts and metadata files to align with the new naming conventions.
- Updated method signatures and logic for better code clarity and maintenance.
- Incremented metadata version from
18
to26
. - Updated method signatures and internal logic to handle complex and generic types more effectively.
- Optimized field and method definition processes to streamline the runtime's reflection capabilities.
- Updated namespace declarations and method signatures for consistency.
- Streamlined array initialization syntax and improved code organization.
- Improved readability and maintainability of various methods and assignments.
- Updated label definitions in code generation for better clarity.
- Updated command line arguments in
launchSettings.json
. - Added debug print statements and improved thread handling in
TaskScheduler
. - Updated project files and solution configurations to include new projects and adjust project types.
- Added a project reference to
ishtar.vm.libuv.csproj
. - Tests
- Added
ForFeatureTest
to validate the parsing offor
statement syntax. - Introduced
GenericDocumentFeature
tests for various struct definitions and methods, including Fibonacci calculation. - Added tests for
while
statement parsing. - Added tests for fault handling functionality.
- Added a new method in unit tests to create and manipulate native queues, ensuring robustness and correctness of the new queue functionality.
- Added new runtime identifiers for cross-platform support.
- Updated user dictionary with new terms for better code documentation and readability.
- Updated build configuration to include
libgc-dev
in the list of installed packages.