Web development application for C
Rub is a web development application that combines scripting language ease of development to C.
It uses TinyC, a ligtening quick C compiler, which compiles C code dynamically. Your scripts are just regular C programs that are compiled to memory and executed. You get the performance benefit of C with a development cycle more akin to PHP, edit your code, reload the browser.
The HTTP part of the application is based around libevent which is a great library and I have used it before so I went with it.
The rub application is controlled by a config file that looks something like this:
shane@slurp:~/rub$ more rub.conf
// Word
const int RPort = 8888;
const char *RDocRoot = "/tmp";
const char *RScriptRoot = "controllers/";
Yes, the config file is just C code that gets compiled dynimcally. Internally the code then does something like this:
int port = config_get_int( "RPort" );
Pretty crazy but it works like a charm.
shane@slurp:~/rub$ more controllers/test.c
#include <stdlib.h>
#include <stdio.h>
int main( int argc, char **argv ) {
printf("Hello world\n\n");
return 200;
}
The above program does what you think it would do. Rub compiles it once, caches that compilation and executes it.
Planned changes:
Get system to properly send data back to the browser [or whomever]- Config option to check if scripts should be recompiled when updated or not
Config option to dump compilation errors of script to HTML for ease of debugging- #pragma in tcc to add additional libraries and paths for compilation something like
- Utilize more than one core
- add feature in tcc to support reflection for C
- Once reflection is done implement Annotations for functions, variables, structs etc
For more info on TinyC check out -