www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Gordon programming language

reply Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
Hello,

decided I'd post about my primarily D-influenced programming 
language here.

It's data oriented, compact and despite D's influence, has a very 
different personality with no emphasis on metaprogramming – 
albeit having simple polymorphism and even compile time 
execution. Stability is something I care about deeply so you can 
expect few to no deprecations over time after some initial 
instability perhaps.

Feature set is not large and I'm not willing to add a whole lot 
of "cool" convenience features besides what there already is, and 
there is no support for either OO or functional style 
programming.  However, I'm rather open to adding features that 
unlock great performance benefits, such as intrinsics support.

The module system is similar to Rust and works nicely with 
conditional compilation in that you can exclude entire modules 
and directories and, unlike in Rust, use conditional symbols that 
are automatically visible to all submodules.

The compiler frontend is about 34k lines of code, self hosting 
and very fast.  LLVM is the backend, but with the MIR used in the 
compiler, it's fairly straight forward to bolt on other backends.

Compiler source code:
https://github.com/tjhann/gordon

Website:
https://tjhann.github.io/gordon-web/

I don't know how to make websites... and I want a much lighter 
background actually.

Take a look!  :)
Oct 24 2021
next sibling parent Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Sunday, 24 October 2021 at 10:13:14 UTC, Tero Hänninen wrote:
 Hello,

 decided I'd post about my primarily D-influenced programming 
 language here.

 [...]
Cool! I'll check it out 😎
Oct 24 2021
prev sibling next sibling parent reply Basile B. <b2.temp gmx.com> writes:
On Sunday, 24 October 2021 at 10:13:14 UTC, Tero Hänninen wrote:
 Hello,

 decided I'd post about my primarily D-influenced programming 
 language here.
Nice work.
 It's data oriented, compact and despite D's influence, has a 
 very different personality with no emphasis on metaprogramming 
 – albeit having simple polymorphism and even compile time 
 execution. Stability is something I care about deeply so you 
 can expect few to no deprecations over time after some initial 
 instability perhaps.

 Feature set is not large and I'm not willing to add a whole lot 
 of "cool" convenience features besides what there already is, 
 and there is no support for either OO or functional style 
 programming.  However, I'm rather open to adding features that 
 unlock great performance benefits, such as intrinsics support.
Support for LLVM intrinsics should be indeed of a great value added. That could work by adding a new attribute with a string exp to recognize it. without that the oprations that are done in the FPU can only be based on assembly and less inlinable.
 The module system is similar to Rust and works nicely with 
 conditional compilation in that you can exclude entire modules 
 and directories and, unlike in Rust, use conditional symbols 
 that are automatically visible to all submodules.

 The compiler frontend is about 34k lines of code, self hosting 
 and very fast.  LLVM is the backend, but with the MIR used in 
 the compiler, it's fairly straight forward to bolt on other 
 backends.
Congrats for reaching self-hosting. Once thing I notice is that there does not seem to be a way to generate debug info. You really should support them (LLVM C api has a whole header with everything you need to achieve that), because not only this allows to debug the compiler more easily but also can be used to easily instrument code in a generic way. With debug info, you can of course debug but also profile (valgrind --tool=calgrind), find leaks (valgrind), cover (kcov), etc.
 Compiler source code:
 https://github.com/tjhann/gordon

 Website:
 https://tjhann.github.io/gordon-web/

 I don't know how to make websites... and I want a much lighter 
 background actually.

 Take a look!  :)
Oct 24 2021
parent Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Sunday, 24 October 2021 at 11:33:51 UTC, Basile B. wrote:
 Once thing I notice is that there does not seem to be a way to 
 generate debug info. You really should support them (LLVM C api 
 has a whole header with everything you need to achieve that), 
 because not only this allows to debug the compiler more easily 
 but also can be used to easily instrument code in a generic 
 way. With debug info, you can of course debug but also profile 
 (valgrind --tool=calgrind), find leaks (valgrind), cover 
 (kcov), etc.
Oh yeah, this. Needs to happen, yes. I'm not much of a debugger guy myself having never used a debugger in my entire life so that side would be just for others but the other benefits attract me too. Thanks for bringing them up.
Oct 24 2021
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
The Emperor would shoot you for interrupting his wedding with this news! Fire 
when Gordon's in range!
Oct 24 2021
parent reply Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Monday, 25 October 2021 at 00:39:07 UTC, Walter Bright wrote:
 The Emperor would shoot you for interrupting his wedding with 
 this news! Fire when Gordon's in range!
Ohh sh*t, I've got to runnn! Thanks for creating D, Walter. I liked the core D language the moment I first saw it and got immediately sucked in. Also wrote my boot compiler in it :)
Oct 25 2021
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 10/25/2021 1:38 AM, Tero Hänninen wrote:
 On Monday, 25 October 2021 at 00:39:07 UTC, Walter Bright wrote:
 The Emperor would shoot you for interrupting his wedding with this news! Fire 
 when Gordon's in range!
Ohh sh*t, I've got to runnn! Thanks for creating D, Walter. I liked the core D language the moment I first saw it and got immediately sucked in. Also wrote my boot compiler in it :)
Thanks for the kind words! P.S. The quote is from Flash Gordon.
Oct 25 2021
parent reply Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Monday, 25 October 2021 at 18:38:15 UTC, Walter Bright wrote:
 Thanks for the kind words!

 P.S. The quote is from Flash Gordon.
Ah, didn't know about that although have heard the name somewhere. I actually named my language after Gordon Freeman from the Half-Life games which I liked to play. He gets lots done with little resources and is silent. My favorite game character.
Oct 25 2021
parent reply JN <666total wp.pl> writes:
On Tuesday, 26 October 2021 at 04:38:40 UTC, Tero Hänninen wrote:
 On Monday, 25 October 2021 at 18:38:15 UTC, Walter Bright wrote:
 Thanks for the kind words!

 P.S. The quote is from Flash Gordon.
Ah, didn't know about that although have heard the name somewhere. I actually named my language after Gordon Freeman from the Half-Life games which I liked to play. He gets lots done with little resources and is silent. My favorite game character.
I was hoping the language is inspired after Gordon Ramsay. With compile errors like: "Look at these pointers, they're RAW", "This syntax is disgusting" "The code is not good enough!"
Oct 26 2021
next sibling parent reply Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Tuesday, 26 October 2021 at 10:11:34 UTC, JN wrote:
 I actually named my language after Gordon Freeman from the 
 Half-Life games which I liked to play. He gets lots done with 
 little resources and is silent. My favorite game character.
I was hoping the language is inspired after Gordon Ramsay. With compile errors like: "Look at these pointers, they're RAW", "This syntax is disgusting" "The code is not good enough!"
Haha! Maybe auto-enable such a mode on April 1st each year.
Oct 26 2021
parent Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Tuesday, 26 October 2021 at 13:25:53 UTC, Tero Hänninen wrote:
 On Tuesday, 26 October 2021 at 10:11:34 UTC, JN wrote:
 I actually named my language after Gordon Freeman from the 
 Half-Life games which I liked to play. He gets lots done with 
 little resources and is silent. My favorite game character.
I was hoping the language is inspired after Gordon Ramsay. With compile errors like: "Look at these pointers, they're RAW", "This syntax is disgusting" "The code is not good enough!"
Haha! Maybe auto-enable such a mode on April 1st each year.
And just so people could still successfully build their projects that day, a compiler switch would appear, "-disable-ramsay".
Oct 26 2021
prev sibling parent bauss <jj_1337 live.dk> writes:
On Tuesday, 26 October 2021 at 10:11:34 UTC, JN wrote:
 On Tuesday, 26 October 2021 at 04:38:40 UTC, Tero Hänninen 
 wrote:
 On Monday, 25 October 2021 at 18:38:15 UTC, Walter Bright 
 wrote:
 Thanks for the kind words!

 P.S. The quote is from Flash Gordon.
Ah, didn't know about that although have heard the name somewhere. I actually named my language after Gordon Freeman from the Half-Life games which I liked to play. He gets lots done with little resources and is silent. My favorite game character.
I was hoping the language is inspired after Gordon Ramsay. With compile errors like: "Look at these pointers, they're RAW", "This syntax is disgusting" "The code is not good enough!"
"Delicious" "Thank you darling" "3 0 cry"
Oct 27 2021
prev sibling next sibling parent reply Dennis <dkorpel gmail.com> writes:
On Sunday, 24 October 2021 at 10:13:14 UTC, Tero Hänninen wrote:
 decided I'd post about my primarily D-influenced programming 
 language here.
Looks very interesting. Why did you create it?
Oct 26 2021
parent reply Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Tuesday, 26 October 2021 at 15:12:08 UTC, Dennis wrote:
 On Sunday, 24 October 2021 at 10:13:14 UTC, Tero Hänninen wrote:
 decided I'd post about my primarily D-influenced programming 
 language here.
Looks very interesting. Why did you create it?
I wanted to have a language that accurately supports my way of doing programming and doesn't have many features beyond that, a lean language. I wanted more clarity and stability and a more Rust like module system and a different conditional compilation system. I absolutely love how those work together in Gordon. As a nice overall kind of bonus, I could do numerous little tweaks and changes with full freedom. Like the opposite of a death by a thousand paper cuts. I could revamp the compiler interface too, not that I ever had gripes with dmd's. And you know this was my dream, it was in me, I had to let it out! :)
Oct 26 2021
parent reply Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Tuesday, 26 October 2021 at 18:19:59 UTC, Tero Hänninen wrote:
 On Tuesday, 26 October 2021 at 15:12:08 UTC, Dennis wrote:
 [...]
I wanted to have a language that accurately supports my way of doing programming and doesn't have many features beyond that, a lean language. I wanted more clarity and stability and a more Rust like module system and a different conditional compilation system. I absolutely love how those work together in Gordon. As a nice overall kind of bonus, I could do numerous little tweaks and changes with full freedom. Like the opposite of a death by a thousand paper cuts. I could revamp the compiler interface too, not that I ever had gripes with dmd's. And you know this was my dream, it was in me, I had to let it out! :)
How does D-interop work?
Oct 26 2021
parent reply Tero =?UTF-8?B?SMOkbm5pbmVu?= <abcd none.none> writes:
On Tuesday, 26 October 2021 at 20:26:57 UTC, Imperatorn wrote:
 On Tuesday, 26 October 2021 at 18:19:59 UTC, Tero Hänninen 
 wrote:
 [...]
How does D-interop work?
I'm not sure what you mean, there is no D-interop. It's just a similar language so by tweaks etc I mean differences to D.
Oct 26 2021
parent Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Wednesday, 27 October 2021 at 06:04:01 UTC, Tero Hänninen 
wrote:
 On Tuesday, 26 October 2021 at 20:26:57 UTC, Imperatorn wrote:
 On Tuesday, 26 October 2021 at 18:19:59 UTC, Tero Hänninen 
 wrote:
 [...]
How does D-interop work?
I'm not sure what you mean, there is no D-interop. It's just a similar language so by tweaks etc I mean differences to D.
Ok, I didn't look at it. Just thought it was a derivative of D, sorry 😎
Oct 27 2021
prev sibling next sibling parent Tony <tonytdominguez aol.com> writes:
On Sunday, 24 October 2021 at 10:13:14 UTC, Tero Hänninen wrote:
 Hello,
 I don't know how to make websites... and I want a much lighter 
 background actually.

 Take a look!  :)
Haven't done html in years, but I believe this line is specifying the color of your text and the color of your background: -> body { font-family: monospace; color: #e0e0da; The values in main.css are for a dark text on a light background: background: #F0EDE3; You could either remove the "{body.." line from index.html or modify the "color" and "background-color" attribute values.
Nov 15 2021
prev sibling parent Salih Dincer <salihdb hotmail.com> writes:
On Sunday, 24 October 2021 at 10:13:14 UTC, Tero Hänninen wrote:
 Hello,

 decided I'd post about my primarily D-influenced programming 
 language here.
 ...
 Website:
 https://tjhann.github.io/gordon-web/
```d 1 // The default enum base type is ubyte to not bloat structs (better for cache use). 2 enum MODE : int { 3 FAST, 4 DEEP, 5 ADAPTIVE, 6 } 7 8 int main() 9 { 10 auto m = MODE.DEEP; 11 12 // A switch on enum must be exhaustive of course. 13 switch (m) { 14 case MODE.FAST: 15 break; // empty case falls through by default – use break to avoid 16 case MODE.DEEP: 17 int a = 1234; 18 goto; // fall through 19 case MODE.ADAPTIVE: 20 // do something 21 } 22 23 return 0; 24 } ``` Where does "goto ..." branch to in [example code](https://tjhann.github.io/gordon-web/ex2.html) above, line 18? In D, it can be an external identifier: ```22 EXTERNAL:``` // from switch... Does Gordon have it? Also isn't there a scope hierarchy, line 17? Because a defined inside scope cannot be accessed from outside scope. Finally, we use ```final switch``` in D, if there is no ```default```. I wish you accomplish everything...
Nov 17 2021