CRIS is a powerful yet easy-to-use language for Scratch! There is no demo, that way you don't have to delete everything to write your own code. To edit code, click "See inside". Try entering the following code: main{ auto i = 'Hello world!'; out.print i; } 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! Tags: #programming #coding #language #scripting
This 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': 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