[About] | [Features] | [Examples] | [FAQ]

The issue35 Programming Language

## About

issue35 is a low-level language designed to be used as a drop-in substitute for C. While syntactically similar, semantically it has a number of differences that, depending on your preference, might make it easier to write in. Who knows? I sure don't.

The primary focus for issue35 is brutal honestly; that is, issue35 strives to be utterly transparent about what it is, and what it's trying to be. What it is, is a pretty hacky transpiler to semi-portable c99, and what it wants to be, is a less hacky c99 transpiler that can be used to write real code. Hopefully not by you, because that'd be silly.

The compiler is blazingly slow, clocking in at 183 seconds to compile 1,000,000 lines of issue35 code on my ~4.3 GHz Intel i7-8700. Yeah, we're talking make-and-consume-some-coffee build times, here. These speeds could most likely be improved via allowing the compiler to utilize more than a single core, but with the way I wrote things, that's not happening anytime soon.

Obviously, issue35 takes primary inspiration from C itself, but also from Go, and... other things.

## Features

### Garbage Collection

By default (this is trivially bypassed if you allocate memory directly via C interop), heap-allocated memory is garbage collected. issue35 utilizes the Boehm-Demers-Weiser conservative garbage collector for memory allocation and management. If you only allocate memory via issue35 and not C, your programs should be more than safe memory-wise. Obviously you could #malloc(sizeof(SomeStruct*)) and #free(some_freed_value) however you'd like, which would defeat the purpose... so just don't, okay?

### Mostly painless C interop

issue35 allows inline C via starting a line with #, which will directly generate the given C. issue35 variable types translate to C exactly how you'd imagine - []char to char*, int to int, etc. Pretty neeeeeat.

### Portability?

I mean, it's worked on every system I've tested it on. So it's got the "It Works On My Machine(s)" seal of approval for portability, which is good enough for now since I'm the only person using it.

## Example Code


    // Hey look, an overly complicated Hello World!
    c_include <stdio.h>
    include "someotherfile.i"

    alias []char string

    struct Message {
        string value
    }

    fn main() int {
        auto ex = new Message(value = "Hello, world!")
        output(ex->value)
        return 0
    }

    fn output(string val) void {
        // inline c interop!
        #puts(val)
    }

    fn getMessage([]char msg) string {
        return msg
    }

## FAQ

> Is this a joke?

Nope, it's not. Sadly.

> Can I use this?

No, at least not yet. But like, why would you want to?

> What language is the compiler written in?

Java.

> The name is silly.

yes

> Is anything written in issue35?

Not yet, but I'm planning on writing a text editor and a basic LISP-like using it. So stay tuned?

> Can I donate to support this language with no tangible evidence that it's even real?/Do you have a Patreon where I can dump cash monthly to support this clown fiesta?/Send money?

No. Do this instead, please.