Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aacebo/gpp
Go++
https://github.com/aacebo/gpp
Last synced: about 2 months ago
JSON representation
Go++
- Host: GitHub
- URL: https://github.com/aacebo/gpp
- Owner: aacebo
- License: mit
- Created: 2023-06-18T17:10:01.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-12T06:48:45.000Z (over 1 year ago)
- Last Synced: 2024-10-20T06:17:03.852Z (2 months ago)
- Language: C++
- Size: 312 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go++
a compromise between the `Rust` and `Go` programming languages. It is a compiled and interpreted, typed language that balances ease of use and performance.
## Why?
I started this project because as I used newer languages like `Rust`/`Go` I noticed a trend of awesome new features. `Rust` has a very powerful type system while `Go` keeps things simple by, for example, only have one type of loop statement (`for`). Both excel in very different ways but both have their caviats.
In `Rust` you have to fight with the borrow checker, for low level performance intensive tasks this is the right tool for the job in many cases, but not necessarily for gerneral purpose API development.
In `Go` you have a substantially weaker type system and less features than `Rust`, but in contrast it has a simpler pattern for concurrency and API development.
My ideal outcome for this language is to offer the same simplicity/ease-of-use as `Go` while adding some of the useful features that `Rust` users enjoy.
## Roadmap
| Title | Keywords | Status | Example |
|------------------------|--------------------------|-----------|---------------------------------------|
| Variables | `let` `const` | [ ] | [example](./examples/variables.gpp) |
| Primitives | `string` `number` `bool` | [ ] | [example](./examples/primitives.gpp) |
| Nilable | `?` | [ ] | [example](./examples/nilable.gpp) |
| Strings | | [ ] | [example](./examples/strings.gpp) |
| If | `if` `else if` `else` | [ ] | [example](./examples/if.gpp) |
| Match | `match` | [ ] | [example](./examples/match.gpp) |
| Loops | `for` | [ ] | [example](./examples/for.gpp) |
| Functions | `fn` | [ ] | [example](./examples/fn.gpp) |
| Structs | `struct` | [ ] | [example](./examples/struct.gpp) |
| Garbage Collection | | [ ] | |
| Threads | `go` | [ ] | [example](./examples/go.gpp) |
| Async Functions | `async` `await` | [ ] | [example](./examples/async.gpp) |
| Modules | `mod` | [ ] | [example](./examples/mod.gpp) |
| Imports | `use` | [ ] | [example](./examples/use.gpp) |
| Syntax Error Handling | | [ ] | |
| Runtime Error Handling | | [ ] | |
| Visibility | `pub` | [ ] | [example](./examples/visibility.gpp) |
| Inheritance | `extends` | [ ] | [example](./examples/inheritance.gpp) |
| Generics | `` | [ ] | [example](./examples/generics.gpp) |
| Exceptions | `throw` `try` `catch` | [ ] | [example](./examples/exceptions.gpp) |
| Slices | `[]` | [ ] | [example](./examples/slices.gpp) |
| Maps | `map[K]V` | [ ] | [example](./examples/maps.gpp) |## Future (Advanced)
| Title | Keywords | Status | Example |
|------------------------|--------------------------|-----------|---------------------------------------|
| Struct Tags | | [ ] | [example](./examples/tags.gpp) |
| Reflection | | [ ] | [example](./examples/reflection.gpp) |
| Testing | | [ ] | [example](./examples/testing.gpp) |
| Decorators | `@` | [ ] | [example](./examples/decorators.gpp) |## Author
[Alexander Acebo](mailto:[email protected])