Check out my (under development) Micron programming language (
https://scratch.mit.edu/projects/465672744/ ), featuring more advanced features and a faster runtime.
CRIS is a powerful yet easy-to-use language for Scratch!
The shown demo displays a 3D octahedron. It is similar to the previous 3D octahedron demos but significantly faster due to compiler and VM improvements.
To start from a blank slate, visit this project:
https://scratch.mit.edu/projects/471928182/
Features:
> Very fast runtime
> Built-in expressions and rich selection of operators
> Data types: local variables, global variables, constants
> Advanced control flow and ability to write own procedures
> Namespaces for organization of large code
> And much more!
Check out the CRIS topic:
https://scratch.mit.edu/discuss/topic/461060/?page=1#post-4634832
The best way to learn CRIS is to read the manual:
https://sites.google.com/view/the-cris-programming-language/documentation
Chapter 1 should be enough to get started. The next chapters explain CRIS in greater detail.
CRIS is a work-in-progress. Questions and feedback are greatly appreciated.
CRIS was formerly known as StackScript. However, CRIS is not a scripting language and the programmer can get by without understanding the concept of the stack, so the name was changed.
Tags:
#programming #coding #language #scriptingThis is the final version of CRIS until further notice.
Development history:
1.1:
Added IDE buttons to simplify use of interface
Fixed bug related to handling of random operator
1.0 (0.28)
> Updated vector library
> Argument separator '. ' may be processed differently depending on context
> Introduced 'Input' keyword to simplify procedure input handling
> Changed default context behavior of '. ' separator
> Renamed to CRIS: "CRIS Runs In Scratch"
0.27:
> Refactored compiler code for handling expressions
> Added argument prefixing operator '->'
>> before: fun(std.malloc(5))
>> after: 5 -> std.malloc() -> fun()
0.26:
> Created manual
> Replaced 'elif' with 'else if'
> Allowed groups of operators to have equal rank
> Replaced 'out.refresh' with 'out.msg' which allows a message to be specified
> Added substring operator op.substr:
>> op.substr('ABCDE'. 1. 4) == 'ABCD'
>> op.in replaced with op.contains
> Redesigned default font
0.25:
> Significant improvements to VM:
>> Optimized lookup of some VM opcodes
>> Optimized implementation of commonly-used opcodes
>> Implemented stack frame handling using opcodes
>>> NOTE: exception handling may be messed up
> 'Replaced binary string operator '<<' with '++'
0.24:
> Added an experimental memory allocator which maintains a circular linked list of free nodes to improve performance
> Compiler optimization: simple constant expressions (e.g. 5 * 3 + 1) are pre-computed
> Made most operators evaluate the right hand side first for efficiency purposes
0.23:
> Array improvements: Zero-based indexing and size not stored by default (improves performance and reduces memory footprint)
> Added a module system: non-essential code is imported on request to save time
> Small optimization in the case of accessing the zeroth element of an array
0.22:
> Namespaces can now be nested
> Replaced built-in pen operators with a system for integrating an output module.
0.21:
> Added keyboard input
> Added output handling
0.20:
> Added the ability to integrate a text rendering engine
> Created the StackScript rendering engine and font:
>> The StackScript font is a monospace font. Each character, including spacing, fits inside a 6*11 box. It Supports every character on an English keyboard
> Added shortcuts ] + [ + [S/H] to show/hide target code
0.19:
> Added scope blocks { }
> Added do-while loops
> Fixed static variable initialization
> Pressing the green flag just runs code as opposed to also compiling it
> Added shortcuts for compiling and running code:
>> ] + [ + C to compile
>> ] + [ + R to run code
>> Shortcuts can be disabled by changing 'StackScript: dev shortcuts?' to 0, and enabled by changing it to 1
0.18:
0.18.1:
> Added 'op.len' operator for string length
> Fixed detection of static arrays outside procedures
> Fixed bugs found while developing 'hunt the wumpus':
https://scratch.mit.edu/projects/436606316/
0.18.0:
> Try/Throw/Catch: mainly intended for exceptions but has several other uses as well
> Fixed bug related to tail call optimization
> Fixed bug where elif blocks in a chain without an else block would be skipped
> Fixed bug in handling of else blocks
> Namespace separator changed from '::' to '.'; ex. 'std::exception' becomes 'std.exception'
> Added string operators op.in, op.at and random operator op.rand StackScript now supports every operator in the 'operators' section
0.17:
> replaced '.' with '\' to improve compatibility with decimal numbers
> Static variables are now initialized once at the start of the program
> Automatic variables are scoped to their block by default
> Added list library to stdlib