(Kevins)Osmo get it.. ha..
Cosmo is a statically-typed interpreted programming language written in pure Crystal.
We have an extension for VS code (source), however it currently only features syntax highlighting and code snippets.
git clone https://github.com/KevinAlavik/cosmo
cd cosmo
sudo make
Nothing much just some extra things!
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Test your code (
make test
) - Push to the branch (
make publish
) - Create a new Pull Request
Have any questions or comments? DM me on Discord: runic#5997
- R-unic - creator and maintainer
- quasar098
- Kevin Alavik
- Named arguments
- Make a Cosmo->C compiler
- C bindings
- Grammar
- Regexes
- Endless (and beginless?) range literals
- Postfix
every
loop (e.x.x < 1 for every int x in vec
) typeof
- Multiple assignment/declaration with spreads (e.x.
int x, y = *[1, 2]
) :=
operator (this will include making=
binary expressions a statement [this is gonna be weird to implement lmao])- Enums
- Decorators
- Interfaces
- Namespaces
- Classes
- single inheritance
- mixins
- static/protected members
- Rewrite type system
- bound expressions (!!)
- an actual type pass
- generics
- type inference
- casting union types
- implicit conversions
- intersection types
- Other
- Extend
HTTP
library +
operator for vectors, same functionality asVector->combine
string
andchar
to hex conversions (e.x.<uint>'f' == 15
)- Some form of multithreading
- Intrinsic methods for all datatypes (inherit from a base type)
- REPL supports multiline source
- Extend
- Performance boosts lol
- Import stack traces
- Properly log errors from intrinsics
- Segfaults
- passing
$
? (pretty sure this is just like everything to do with classes) <float[]>[1,2,3]
- passing
- Class instance variables available outside of
$
- Throw if same module was imported twice
["a.b.c"].first.split('.')
tries to access["a.b.c"].first
instead of["a.b.c"].first()
because of thesplit
call with parentheses (bug)
- Chained method calls with optional parentheses (e.x.
["a.b.c"].first.split('.').first == "a"
) - Expectation of errors in parser spec (e.x.
()
throwsInvalid syntax ')': Expected an expression
)
(empty)
TODO: http server routing stuff
- Package manager (Stars + StarsAPI) (WIP)
- Documentation generator?
- Language server
- Highlight function definition names without parentheses
- Explain module system in Wiki
- Update some of the screenshots on the Wiki
- Document intrinsics