Comet is a fast, compiled programming language built on top of C and runs on a custom made stack-based VM. It has an enormous feature list, including:
- Classes (called structs)
- Generics
- Runtime exceptions
- Inline functions
- A system for casting values from one type to another
- A constraint system for generics
- Inheritance
- Imports and a package system (no more C-style header files!)
- An extensive standard library that handles memory management for you
- Arrays
- Linux - natively supported. Comet will work perfectly fine on Linux.
- MacOS - supported. MacOS will you give you extra warnings and you will need to install argp as well as uthash.
- Windows - untested. Comet may or may not work. For the best compatibility, use Comet inside of WSL.
- Other systems - untested. If you're on a Unix-like system then Comet will likely work.
- Variables
- Loops
- While loops
- For loops
- Standard library
- IO - Input/Output
- Printing
- File IO
- Collections - data structures
- List
- Hashmap
- String - string handling and management
- IO - Input/Output
- Imports
- Package system
- Package manager
- Functions
- Returning
- Inline functions
- Structs
- Struct definition
- Fields
- Private/protected/readonly
- Default values
- Accessing / setting fields
- Methods
- Special methods (as, etc...)
- Constructor
- Destructor
- Fields
- "new" keyword
- Calling methods
- Inheritance
- Generics
- Base generics (creation, type checking, etc...)
- Generic constraints
- Struct definition
- Command line args
- Arrays
- Creation
- Access
- Changing values
- Exceptions
- Throw exceptions
- Catch exceptions
- Enums
Comet has no official release yet, and thus you will have to build Comet from source.
- uthash - needed for a dictionary implementation in C
- argp (installed on most Linux distros) - used for command line argument parsing
Just run make install in the root of the repo. This will install the cometc and comet executables as well as the core library needed to run comet. If you want a debug build, run make debug which will just put the cometc and comet executables in the root of the repo instead. Debug builds include the address sanitizer for tracking down segfaults.