Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backlog #620

Open
arakov opened this issue Sep 22, 2023 · 0 comments
Open

Backlog #620

arakov opened this issue Sep 22, 2023 · 0 comments
Labels
Milestone

Comments

@arakov
Copy link
Member

arakov commented Sep 22, 2023

  • optimization : jumping, offset aligning
  • script engine : nested grammar, regexp
  • new opcode : fexp - ppc64le
  • ppc64, aarch64 : fix loads
  • ppc64, aarch64 : xdispatchmr : 9,A
  • x86-64,ppc64, aarch64 : dispatchmr : 9,A
  • ppc64, aarch64 : fix xrefresh / xflush - use arg instead of direct values
  • execute script : https://www.reddit.com/r/elena_lang/comments/ibblff/run_elena_code_without_build_work_in_progress/
  • script samples : win x86, win x86-64, linix i386, linux amd64
  • migrate all script engine tutorials : win x86, win x86-64, linix i386, linux amd64
  • regression tests : github issues
  • elenavm : test all rosetta code samples for vm
  • Dynamic programming in ELENA : bf loop - https://www.reddit.com/r/elena_lang/comments/7nmib6/dynamic_programming_in_elena_bf_loop/
  • ELENA Script Engine : compiling JavaScript file - https://www.reddit.com/r/elena_lang/comments/6h6nyz/elena_script_engine_compiling_javascript_file/
  • for time being keep SINGLE_THREAD_CONTEXT empty, after the migrating it
    must be made empty
  • arrange action for i386 / amd64 linux release
  • new opcode : fln - ppc64le, arm64
  • new opcode : fsin, fcos, farctan, fpi - ppc64le, arm64
  • setup pipeline for linux x86 & x86-64
  • ppc64le / aarch64 : fexp - improve quality / performace
  • test fexpdp opcode
  • sm : generate advances templates from vm console
  • elena vm : helloworld sample Windows x86-64, Linux x86 / x86-64 / ppc64le / aarch64
  • elena sm : script samples Windows x86-64, Linux x86 / x86-64 / ppc64le / aarch64
  • migrate all script engine tutorials : linix aarch64, linux ppc64le
  • review documentation - https://github.com/ELENA-LANG/elena-lang/wiki/ELENA-in-a-nutshell
  • elena vm : aarch64, ppc64
  • elena vm : ppc64
  • ppc64le : multi-threading
  • 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?
  • 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
  • ARM support #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
  • 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 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
  • 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
  • test all samples for win x86-64
  • for windows x86-64 allocate shadow memory
  • isCompatble - cache the results
  • for linux amd64 allocate shadow memory
  • mt : note on creating closure - lock GC
  • examples : Sockets
  • elt tutorial (stand-alone / in IDE)
  • https://github.com/ELENA-LANG/elena-lang/wiki/ELENA-in-a-nutshell
  • tutorial : Multiple inheritance in ELENA
  • examples : manboy example - till 20
  • examples : tutorials
  • test : https://www.reddit.com/r/elena_lang/comments/7oa098/dynamic_programming_in_elena_call_your_code_from/
  • test : https://www.reddit.com/r/elena_lang/comments/7o3s8b/dynamic_programming_in_elena_evaluating_a_code_in/
  • test : https://www.reddit.com/r/elena_lang/comments/7o1zvq/dynamic_programming_in_elena_conditional/
  • test : https://www.reddit.com/r/elena_lang/comments/7nmib6/dynamic_programming_in_elena_bf_loop/
  • add new variant using multi ret - https://www.rosettacode.org/wiki/Return_multiple_values#Elena
  • 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
  • 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)
  • support $len _buffer for fixed size array in compile-time
  • elenavm : warn in the allocated size is bigger than maximal reserved (see ELENAWinVMMachine)
  • vm taple : too many alloc, they must be replaced with a single one (by executing a script in elt-cli)
  • 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
  • WebApi
  • github action : build for linux
  • IDE migration #184 : linux simplest gui (refresh textview, onDocumentUpdate ...)
  • Mixins should support interfaces #590 : vm : InjectProxyTypeLA
  • Mixins should support interfaces #590 : implementing interface injection : strong interface
  • elenavm / elt for linux, helloworld gui sample (button)
  • elenavm : CreateThreadLA / StartThreadLA / SignalStopGCLA / WaitForSignalGCLA / SignalClearGCLA / WaitForSignalsGCLA
  • InjectProxyTypeLA
  • reuse freed thread slots
  • mt : make sure that if an exception happens inside lock statement, the deadlock is not created
  • extension cannot be used directly-
  • chat sample : use strongly typed command serialization
  • elc : debug / release mode : set high level of optimization for release
  • native support for Value operator with a pointer / reference
  • ppc64 / aarch64 : fix exclude / include opcodes (see x86)
  • static symbol should be thread-safe,
  • a field must be assigned, warn if not
  • threads : clean the perm table after the thread is stopped / freed
  • nillable single dispatcher : use direct reference to nilValue symbol
  • web server - weather forecast
  • LoadExtensionDispatcherLA : currently all preloaded symbols are loaded, but should only for the used namespace
  • generate code templates : project templates
  • casting pointer as int (reading an integer from the pointer)
  • syntax : using cast for user defined literal is not very clear
  • rosetta code : add description for $ string interpolation
  • User-defined string literals
  • yield redux : support break
  • implicit conversion of super class (system'Object) must have dispatching routine
  • elc : report the time it took to compile the project
  • IDE : save the files before compilation if auto-save is on
  • mta : lunux i386 / amd64
  • caching results of isCompatible
  • mta : system minor collect / system full collect - must contain the code to stop all other threads before starting the GC routine
  • treat __threadvar as static one for STA application
  • property "int? X" must be supported
  • syntax error : "Queue q := new Queue();"
  • Environment, Threadpool static fields must be readony
  • chat sample: add mutex (see dpa_queue)
  • textblock must import source information as well (both for compiler errors / debugging)
  • x86-64 : mta - test
  • preloaded symbols must be inside try catch statement
  • ecv-cli : auto completion
  • set up automatic tests
  • implicit lambda function based on the expected value (see system'threading'Task)
  • the following declaration must be allowed : var f := string x => x;
  • support action : (){ ... }
  • WaitHandle, AsyncLocal
  • ThreadLocal
  • Task.delay
  • support syntax : string[] dirNames := new []{ ".", ".." };
  • warn if nil is passed to the non-nil argument
  • ModuleScopeBase::isInternalOp - must be cached
  • unit tests : calling private / protected / internal
  • single dispatch of private / protected / internal
  • implement analog of Interlocked.Decrement / Increment
  • debugger : nested variables inside lambda function
  • Task whenAll optimization - using Interlocked.Decrement
  • test an exception in Task
  • refactore - Compiler :: declareVMTMessage - the function is too long
  • nested extension inside a class
  • use Enumerable as a type for yield method
  • unit test - typed lambda expression
  • calling extension template explicitly - a.populate(n => ...);
  • for closed classes (interfaces) no need to generate the multi-method again if they exists already
  • using $break operator instead of return expression
  • ecv - set filter to hide inline classes
  • AsyncStateEnumerator.proceed message must be resolved in compile-time
  • Func<int,int> does not have byref handler - try to fix the issue
  • __injectInferface : check if the virtual methods are inherited
  • JITLinker : raise an error if the action counter is overflown
  • test semi redirect (vjumprm) for both normal and indexed methods
  • predefined method cannot be indexed
  • check if inline initializer method is called directly
  • indexed methods : indexed abstract
  • cache checkMethod results
  • when Task does not need to be executed asynchronously (the result is already defined) - probably you do not need to put it into thread pool
  • review AsyncStateEnumerator < TResult > . proceed method, inside Action the method continueWith is not directly resolved
  • implement sample when HttpClient will be implemented - https://dotnettutorials.net/lesson/return-a-value-from-a-task-in-csharp/
  • test all x86-64 / ppc64 / aarch64 examples
  • unit tests : virtual, internal virtual, byref for closed class, virtual internal by closed class
  • provide explicit message signature .&add [ int ] (n)
  • Install to different location #696 - it will be possible to provide the mapping file, containing the paths to all data / config files; the system will look for the file in the current folder, or it can be selected via a command-line argument
  • elenart : linux : try to get syntax.dat and config file similar to windows version
  • ecv : linux : try to get syntax.dat and config file similar to windows version
  • ptr + int -> in 64 bit mode is not supported
  • fix extension litteral - mssg sin<system'math'mathOp>[0] (see a documentation)
  • auto loading only used namespaces (instead of all)
  • run script functional test for x86-64
  • check : ELENA 6 : How to use ELENA code from external program
  • Use forward conditional jumps when the fall-through code is likely to be executed.
  • Use backward conditional jumps when the fall-through code is unlikely to be executed.
  • review opcode to look where it is critical to change jump adresses to have 16 bit alignment
  • aarch64 : fix exceptionTest, methodNotFoundTest
  • ppc64 : fix exceptionTest, methodNotFoundTest
  • in the following method : A? check(int n) = n == 0 ? self : nil - the whole expession has type A? so no need to typecast the result
  • operator templates :len, :name
  • net'http'Url - support user / password, ipv6
  • regular expressions: pattern
  • regular expressions : split
  • regular expressions : support basic character classes (\W \d and so on)
  • review if using xnop impoves performance (pi & anagram samples)
  • ::Array.copy(dump, tempbuffer, actualOffset, pageSize) - must be supported
  • statement templates must have unique name, so we must check if the expression or state templates were not declared in the same namespace (e.g operator:xx and expr$operator:xx)
@arakov arakov added the backlog label Sep 22, 2023
@arakov arakov added this to the Backlog milestone May 6, 2024
arakov added a commit that referenced this issue May 24, 2024
arakov added a commit that referenced this issue May 31, 2024
* #590 : implementing functional test
* #620 : introducing out ref variable
* refactoring code - using out ref parameters
* warn if out variable is not assigned in the method
* [FIXED] ?. operator
* working on ide for linux
* [ADDED] #655 : new option to keep output terminal after the program ends
* [FIXED] retrieving a source for the reference modules
* [ADDED] auto-recompile option
* [FIXED] MTA : critical exception handler
* [FIXED] recent list - only 9 elements must be in the list
* [ADDED]#69 : GC statistics
* [ADDED] support project collection file
* [FIXED] nil cannot be returned for nil object - use default instead
* #650 : Calling a named constructor from an implicit default one

---------

Co-authored-by: Alex <alex@Ubuntu.myguest.virtualbox.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant