Skip to content

Releases: TheRealMichaelWang/cish

v1.1.1

01 Jul 00:59
c109aea
Compare
Choose a tag to compare

v1.1.1

This project has been renamed to Cish. Development wise, several minor bug fixes have been made. In addition, a some debugging capabilities have been added to both Cish, and it's compiler Capote.

  • Tracebacks; This is the most major technical addition. Instead of poring of bytecode dumps, one can simply follow a very Python-like traceback.
    Screenshot (157)
  • The standard library has been reorganized and rewritten in a manner that's more ergonomic with the newest of Cish's features (ie sum types, various bits of syntactic sugar).
  • Examples have been updated as well, in a manner similar to which the standard library was updated.

Full Changelog: 1.1...1.1.1

Code Examples

For some code examples, look in the examples folder. For even more examples, I'd recommend checking out the standard library.

  • You must download the standard library for the examples to work!
  • Place the examples folder in Capote or Cish's working directory.

Try it out!

  • If you are using windows, you can download any of the binaries below. capote is the compiler, and cish is the interpreter.
    • Linux users have to build from source, and it's recommended you do so regardless - you can squeeze more performance out of cish if you do so.
      • To build from source, clone this repo and run the makefile, or clone Capote's repo and run the makefile.
  • Download stdlib.zip, unzip it and place the stdlib folder in either Capote or Cish's working directory.

v1.1

20 Jun 02:57
1b0e70b
Compare
Choose a tag to compare

Many important bug fixes were made in this release. In addition, many amenities have been added to SuperForth:

New Features:

  • Added Runtime Type Information
    • Supports Type-Safe downcasting (parent to child type).
    • Supports Runtime "Type Checking" (ie fallible<T> is error<any>)
    • Enables sum-types, and "enums".
  • Call stack trace backs are displayed upon a runtime error.
  • Implicit return nothing's.
  • Syntactic Sugar for procedures and code blocks
    • The fast return (=>) keyword, (ie proc(int a, int b) => a - b).
    • Code blocks with one statement don't need encapsulating brackets (ie while(true) continue;).
    • For loops (in sum, glorified while loops after abstraction).
  • Rewrote and reorganized the standard library
    • Added some common data structures (list, linked list, and hashmap).
    • Added the fallible<T> sum type for error handling and basic tuple types (pair<A, B>, triple<A, B, C>)
    • Added some basic sorting algorithms(bubble and quicksort)
  • A Compiler (emits C from cish IL)
    • Can emit Vex/PROS compatible C-code as well

Bug Fixes:

  • Fixed many type checking bugs.
    • A runtime downcasting substitution issue (#39).
    • Record instantization issue with type arguments (#35).
    • Fixed many runtime type signature atomization issues.
    • Fixed garbage collector issues with the reset stack (#27, #21).

Full Changelog: 1.0...1.1

What the following files are:

File Description Target Architecture Build Date
superforth.exe A cygwin gcc build of the interpreter for windows x64 6/19
superforth-msvc-x64 A MSVC build of the interpreter x64 6/19
superforth-msvc-x86 A MSVC build of the interpreter x86 6/19
capote.exe A cygwin gcc build of the compiler for windows x64 6/19
stdlib.zip A zip of the stdlib. Works with both compiler and interpeter. N/A N/A
stdheader.c A file required for the compiler. N/A N/A

v1.0

14 Apr 02:28
05c822b
Compare
Choose a tag to compare

SuperForth has now reached an initial operating capacity of sorts. It now supports most, if not all the features originally planned are all implemented. It is reasonable to expect the syntax will not change signifgantly after this release. The introduced features include, but are not limited to:

  • Parametric polymorphism for both records, and functions.
    • Support for type requirements/interfaces
  • Clean and easy to use Structured programming
    • Support default values that are evaluated lazily upon every instantiation.
    • Support inheritance, and passing type parameters and other types downstream as type arguments to a parent record/struct.
  • Improved reliability
    • Enhanced escape analysis improves memory-safety, applies optimizations.
      • The overall amount of garbage-collection related bugs have been reduced signifgantly, to zero.
    • Fixed many bugs. See issue #11 to #21: these include relatively mundane bugs such as parsing errors with the AST parser to far more subtle and complex ones involving generics, garbage-collection, memory-safety, type-safety, or all at the same time.
  • Improved Performance
    • From barley faster than python to faster than Scheme, using this benchmark.

Initial Release

04 Sep 00:42
fd50d60
Compare
Choose a tag to compare
0.1

Add files via upload