ELENA is a general-purpose language with late binding. It is multi-paradigm, combining features of functional and object-oriented programming. Rich set of tools are provided to deal with message dispatching : multi-methods, message qualifying, generic message handlers, run-time interfaces
overloading the method return, put it in the first page as a feature
lazy expressions, put it in the first page as a feature
windows executable - support manifest
debugger info : save the path relative to the src60 path?
internal / auto-generated classes must not be included in run-time attributes
arm : uncomment loadv opcode : using and imm
arm / ppc : supporting indexes bigger than arg12 or arg16
rename movfrm to xmovfp
redesign : for 64 bit:object size offset should be 8, instead of 4
optimization : WinEncoder.convertChar (do not use the intermediate buffer)
external inline template should be private / internal. Currently it is not possible because
it cannot be resolved by template generation
vm : on stop : unprotected / remove executable flags, on start - reverse the action
do:while : both statement are matched : do{ a } while(b) and do{ a } while{ b } which is not correct?
aarch64 : setting mask for size (createn, ...)
script module template
fix the following code : writeDisp32Hi, writeDisp32Low, writeXDisp32Hi, writeXDisp32Low in
vm mode - correct base should be used;
VEH_HANDLER should exclude the current frame if it was invoked from external code (callext - should
store the current frame in the extra variable, and clear it after the operation end)
setr - 32 / 64 references (two addressing modes)
win64 executable: 32bit opcodes for assigning can be used
386 : writeRef32Hi, writeRef32Hi - for non virtual mode - should offset the address to be correctly mapped to opcode
support low and high part of addresses (for ppc64) - e.g. offset 80000000h offset - low, 80000000h - high, offset <<= 2
LoadExtensionDispatcherLA : currently all preloaded symbols are loaded, but should only for the used namespace
repeat-until statement
inside the method, "$name __decl" should return the method full name?
ncopy / lcopy
module template - to include basic import statement
module template - probably should include meta dictionary for attributes / types / ...
generic extension - should the output type be set?
do load self for expression with ret statement
new unit test : dispatchmr (both function and normal one)
test binary file reader / writer
test finally block with locally allocated variables
asmc : raise an error if the label was not resolved
interprete collatz scripts
translit : redesign an example using multi-value literal and make it constant
matrix sample : review the code, it should be possible to use the lambda function without specifying the exact output type
calc sample - supporting function
calc / js - dynamic version
rosetta code : Return multiple values using ELENA 6.0 feature
corex : tests - lock test, GC test, printing in one thread / calling GC in another
amd64 : implement system 5
test all samples for win x86-64
retro : is CONVERSION_MESSAGE flag is really required?
sm : generate some basic templates from vm console - hello world sample
inno setup : x86-64
support mta_gui, vm_mta_console
review ppc64le - find a better solution to deal with n16_lo > 07FFFFh (see cmpn)
ppc64le,aarch64 : implement xdispatch i
do not generate a debug info for implicit class symbols
race condition by unboxing (e.g. weak if-else branching)
use direct reference for - BoolValue#true.Inverted
remove temporal solution for Map<Key,T> (see retrieve(int index, TKey key))
nullable variable / field - should be boxed only when required, otherwise it is a normal variable / field
warn if a variable / field can be nil (if the option is enabled)
MessageLiteral tutorial (program 4)
test elenasm for linux : i386, amd64, ppc64le, aarch64 (calc, interpreter, js)
an exeption inside windProc will corrupt the frame chain, so all onWMxxx handler must have try-catch statement
no method call / allocating must be allowed inside external block
find out why agenda sample raises an exception when the open file dialog is opened first time. Maybe something related to manifests? Currently this exception is ignored. The temporal code must be removed after solving the issue
snake game : text / gui version, using expression trees in real-life apps (see c#)
why IntNumber.add<'RealNumber>[2] has no byref handler
new unit test - xstore sp:0, -1 / xstore sp:1, -1
one meta list cannot have both symbols and lists; probably better to have two separate type of meta list
make sure all byte code optimization for x86 are added for x64
doc : multiple inheritance - tutorial
make sure the preloaded symbols declared in another module is loaded when that module is used
functional test - evaluate an expression using script engine (including extension - both normal and variadic, with overloads)
implement ExtensionMessage.equal
support subexpression for "?." and "." (e.g. object.getClass().dto_properties())
support function call with double colon (e.g. ::printing() - is always a function)
support $len _buffer for fixed size array in compile-time
redesign switch statement : it should be possible to use as an expression as well (so we cannot use => anymore : e.g.
console.printLine(x => 1 { "first" } 2 { "second" } 3 { "third" }) ) console.printLine(x $sel 1 => "first", 2 => "second", 3 => "third")
elenavm : warn in the allocated size is bigger than maximal reserved (see ELENAWinVMMachine)
elenavm : show in introduction if it is 32bit or 64bit version
vm taple : too many alloc, they must be replaced with a single one (by executing a script in elt-cli)
warn if typecasting method returns itself, it leads to infinite call
optimization : proxy dispatcher
VMT output type list : try to reuse existing one (especially when implementing interfaces)
linux elc : support project collection
sending a weak message with a nil strong-typed arguments - the result will be different from the direct operation
HttpClient
WebApi
github action : build for linux
generate code templates : project templates
184 : linux simplest gui (refresh textview, onDocumentUpdate ...)
386 : writeRef32Hi, writeRef32Hi - for non virtual mode - should offset the address to be correctly mapped to opcode
184 : linux simplest gui (refresh textview, onDocumentUpdate ...)
590 : vm : InjectProxyTypeLA
590 : implementing interface injection : strong interface