Skip to content

breckinloggins/cx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(NOTE: This project is currently "sleeping" - I'm too optimistic to call it dead)

Cx - C' (C Prime) was unfortunately taken, and even though the project is dead, I don't want to steal the name

Vala - Coolest idea ever, but has some downsides: Unix-centric, Gnome-centric

I want to create yet another alternative to C as a systems programming language, so my idea is Cx:
    - Fully Open Source
    - Compiles to plain C (as terse yet readable as possible [ideas should be terse, identifiers readable])
    - Generates the smallest and most equivalent C Code possible
        - One thing we need for this is layered functionality.  As an example, if a programmer declares an int, it should just be an "int" if we never do anything super fancy.  Or we could use extension methods to extend basic types.
    - Native support on Linux, Windows, and Mac OS X
    - Small, efficient runtime built in to emitted C code
    - Runtime can be disabled, resulting in reduced feature set but faster code
    - Backward compatible with Vala and C.  Can write C anywhere and it will Do The Right Thing - UPDATE: This may cause more trouble than it's worth
    - Produces small executables.  If using the V# Libraries, only pulls in the bare minimum it needs ("using System" doesn't pull in 8MB of crap)
    - Originally written in vala but should be self-hosting.
    - Should be able to compile V# and use the native libraries anywhere there's a C compiler and a POSIX subsystem.  Windows will be treated specifically at the start, so there are no issues with that platform
    - Doesn't throw out the baby with the bath water.  We have enough "safe" languages.  Cx is defined for real programmers who do real programming.  Among the examples of this:
        - statements can go in if statements.  If you want to do if ((p = alloc_new_p()) != null) { // ... } you can.  Note that if statements must still evaulate to bool, so you'll have to do the explicit comparison, but you don't have to put the assignment on another line
        - case statements can fall through with no issues.  If you miss a break, that's your fault
        - you can drop into pointers if you need
        - type punning will still be possible, because struct and class layouts will be well-defined and reliable
        - the general guiding principle is: safe by default, but no straightjackets

Compactness:

		I read an article today about D.  It was a counterpoint to an earlier piece arguing in favor of the language.  One of the best things out of the article was its argument against the assertion that D was the next "systems programming language."  The point was made that you would never think of writing a kernel in D or using it for embedded systems, because the executables it produces are much too large.

		This, to me, re-emphasizes one of the primary goals of Cx: stay close to C.  The point of Cx is to bring a modern feel and modern capabilities to C, without all the baggage of C++.  But, in general, it's extremely important to structure the runtime of Cx to be as small as possible, and to only pull in the bare minimum requested by the programmer.

About

The Cx Programming Language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages