kos-lang / kos Goto Github PK
View Code? Open in Web Editor NEWKos programming language
License: MIT License
Kos programming language
License: MIT License
A separate 'unicode' module is needed for these operations to be handled properly. The default implementation should do a binary comparison and ASCII lower/upper.
Write a Kos script which checks coding style.
Update source code to correct any coding style errors.
The current routine used for extracting doubles from strings has a minor roundoff error when the number of digits reaches the limits of double precision.
Pass stack frame pointer instead of context pointer.
Require all threads invoking Kos functions to be registered. KOS_get_stack_frame() invoked to obtain a stack frame pointer should take care of registering automagically.
In debug builds: assert if current thread is not the thread registered in the stack frame.
Allocate stack frames from a buffer (except for stack frames for generators). Initial measurements suggest that we spend a lot of time allocating stack frames.
Keep exception status in the stack frame. Initial measurements suggest that TLS access is too slow for that.
Consider keeping registers in stack frame as well, or alternatively keeping them in a growable register array (except independent variables and generators).
Improve some error messages and provide better hints on how to fix them, both during compilation and during run time
Derive all exceptions thrown internally and by modules from a exception prototype and correctly print exception string for these exceptions.
Run one script (or multiple if necessary) multiple times, with an error index passed on the command line, incremented on every run. All conditions which can possibly fail should be ordered an each error condition should fail on subsequent runs.
This will require building interpreter/lang/modules with a special flag.
Write a Kos script which generates valid source code with predictable results. Test the generated scripts.
Consider adding unicode support in 'unicode' module.
Some amount of memory may be required for unicode tables, so it may make sense to put this in a module.
An alternative is to support it in core.
Consider parsing the public Unicode tables, e.g.:
http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt
to extract lowercase/uppercase relations and ordering (for lexicographical sorting).
Investigate adding a test based on thread sanitizer and possibly other sanitizers as well.
These are described here: https://github.com/google/sanitizers
Add _KOS_printf function which can be re-implemented when embedding Kos if needed.
All code in Kos should use it for all internal prints.
Consider it also for any stdout interaction.
Problem to solve: how to handle external calls, native functions and objects held by C functions without races?
One possibility: individual short-lived (scavenged) heaps for each thread.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.