orange
orange copied to clipboard
Create Orange Mini
Orange Mini is a subset of the Orange language to be used for bootstrapping. It will be written in C++ and contain only the following features:
- [ ] Loose aliases
- [ ] Arrays
- [ ] Core builtin interfaces (Number, Ordered, etc.)
- [ ] C interoperability
- [ ] Type casting
- [ ] Classes
- [ ] Inheritance
- [ ] Properties
- [ ] Basic enumerators (C-style)
- [ ] Functions
- [ ] Type extensions
- [ ] Generics
- [ ] Interfaces
- [ ] Loops (for, while, do while)
- [ ] Packages and namespaces
- [ ] Pointers and references
- [ ] Basic preprocessor directives (#if)
- [ ] Privacy levels (private/protected/public/etc)
- [ ] Variables
The following features will not be available in the miniature version:
- Strict aliases
- Tuples and tuple unwrapping
- Short blocks, blocks as values
- Enums w/ values
- Switch statement
- Default values for parameters
- Named arguments
- Implicit generics
- Partial classes
- Full UTF-8 support in source files
- Placeholder (
_) variable - Closures
- Lambdas
- Generic constraints
The only binary Orange Mini will produce is oc. It will take in a series of .or files and produce either an executable or a library. It will link to libc by default, but can link to no other libraries. Using orange libraries with oc requires passing in all of their source files.