ForumSite Announcements ► Programmers: Try Crayon
Abusing the Announcements forum for my own personal projects again...

As some of you know, I wrote a programming language called Crayon a while back (the language most of the recent games in the Blake's JS Arcade are written in). In recent weeks, I've polished it up for public consumption and wrote up large portions of the documentation and even a tutorial. If you are interested in programming and want to give simple game programming a try, please do so. I'm looking for as much feedback as possible.

Main site
Download v0.1.2
Mostly complete documentation
Tutorial for intermediate programmers

IRC channel is #crayon on EsperNet.

A lot of the resources are still being written, but it's at a point where most of it is figure-out-able to those with a little programming experience or, for everything else, you can just ask me questions if you have any.
Ooooh~! I might have something to do what with the day and a half weekend extension next week.

I've had a rather good experience in Visual Basic, and have wanted to try something more "intensive". Although I'm better at debugging rather than pretty code.
From disaster:
Unhandled Exception: System.Exception: Project ID can only contain alphanumerics and cannot start with a number.
at Crayon.AbstractPlatform.VerifyProjectId(String projectId)
at Crayon.AbstractPlatform.Compile(BuildContext buildContext, String inputFolder, String baseOutputFolder, String nul
at Crayon.Program.Compile(String[] args)
at Crayon.Program.Main(String[] args)
When I tried to compile the "hello, world" example using command-line arguments. It worked when I made a build file instead though.
From documentation:
The condition of the if statement MUST be a boolean expression.
Yes. (っ˘ڡ˘ς)
From documentation:
for (;;) {}
This has no setup, no step, and the conditional is implicitly always true. It is equivalen to the following while loop:

while (true) {}
But just because you can doesn't mean you should.
What do you have against the "forever loop", huh?

Anyway, this is really damn cool. Looking forward to messing around with this more. Awesome work! ^_^
I will do this once I learn and understand Python, which will happen this summer. Unless you recommend trying this first.
From disaster:
...some stack trace...
When I tried to compile the "hello, world" example...

Arg, doc was written against 0.1.0 and this was a bug fix I added in 0.1.2. Will fix it more in 0.1.3.

What do you have against the "forever loop", huh?
It's a convention that stems from saving characters in source code and while (true) {...} is clearer. But under the hood it doesn't matter as Crayon generates identical byte code for both.

Houndoom said:
Unless you recommend trying this first.
If you already know JS or PHP and want to learn Python, you should learn Crayon first. If you already know Python and want to learn JS or PHP, you should learn Crayon first. This is because it sits between them on some sort of spectrum.
I also blame Visual Studio in part for that. I switched to using "for (;;)" because of this issue, but now I kinda like it. :P
Does Crayon currently support OOP/UDTs? There are references to it in the documentation, but none of those sections are complete.

class Foo {
  constructor() {
    this.field = 'meow';

  function myMethod(x) {
    $print(this.field * x);

class SubFoo : Foo {
  constructor(value) : base() {
    this.field = value;

foo = new SubFoo('woof');
foo.myMethod(3); // 'woofwoofwoof'

Yay! ^_^
I'm going to be writing a beginner's programming tutorial for Crayon. If you have no experience with programming but want to learn and don't mind being a guinea pig, please let me know.

Both Windows and Mac users are welcome this time.
I'll have time to try it out for two months within a week. Easy summer classes. I'm interested.
That may be a good plan for me since as of this moment I have one quick lesson from Soph and zero other experience. So I'm a pretty reasonable approximation of interested n00b
Same here, I'm even more nyooob than you if you got even a brief lesson.
I have exp but it's from like 6 years ago
so I'll do it.
i'd like to do some of that too
Grayseff said:
That may be a good plan for me since as of this moment I have one quick lesson from Soph and zero other experience. So I'm a pretty reasonable approximation of interested n00b

I have a test and two assignments for school to finish. I did do a little bit of yours though.
So instead of cross-compilation to various languages/platforms, it just layers stuff in a VM. So you end up with two VMs for VM-based targets.

Have you seen Haxe?
Yup. It's a similar use case (at least for now, as I plan to take this in a different direction in the next release). Without a VM stuff like this is prone to happen. It's a trade of platform consistency vs performance.
I would say it is a natural outcome of using platform specifics. There is always a choice to make a wrapper to have consistent behavior where needed. In Crayon, that is not a choice.

What direction Crayon is going to go?
Localization of the language itself.
Wait, does that mean the Crayon language itself will vary by target platform?
Not platform. The actual spoken language of the user. My plan is to translate the syntax and core function names (and of course documentation, resources, etc) into Spanish and Japanese localized versions by the end of this year.
Wouldn't that result in fragmentation of the Crayon programming community? Libraries written for Crayon dialect would be unusable (in general) in another.
I'm sorry. I know Crayon is Blake's baby, but I know nothing about programming language.

There must be some documentation for Crayon. I'd like to get into programming, if that means anything to anyone.
Forum > Site Announcements > Programmers: Try Crayon