題名の通りです。リファレンスカウントGCを持ちJavaやGoのように気楽にヒープを生成できます。
Hello Worldは以下です。
#include <stdio.h>
int main(int argc, char** argv)
{
puts("HELLO WORLD");
return 0;
}
Cそのものです。Cプリプロセッサーが動きます。なので、Cのライブラリがそのまま使えます。
comelangらしいHelloWorldは
#include <comelang.h>
int main(int argc, char** argv)
{
puts("HELLO" + " WORLD");
return 0;
}
です。"HELLO" + "WORLD"でヒープが生成されていますが、puts後に自動的にfreeされます。
追記可能なbufferというクラスを使うと
#include <comelang.h>
int main(int argc, char** argv)
{
var buf = new buffer();
buf.append("HELLO").append(" WORLD");
puts(buf.to_string());
return 0;
}
です。
stringクラスを使うと
#include <comelang.h>
int main(int argc, char** argv)
{
string str = s"HELLO";
string str2 = string("HELLO");
puts(str + " " + str2);
return 0;
}
となります。
クラスを使うと
#include <comelang.h>
class HelloWorld
{
new() {
string self.str = string("HELLO");
string self.str2 = string("WORLD");
}
void show() {
puts(self.str + " " + self.str2);
}
}
int main(int argc, char** argv)
{
var h = new HelloWorld();
h.show();
return 0;
}
となります。
listを使うと
#include <comelang.h>
int main(int argc, char** argv)
{
var li = new list<string>();
li.add(s"HELLO").add(s"WORLD");
puts(li.join(" "));
var li2 = [s"HELLO", s"WORLD"];
puts(li2.join(" "));
return 0;
}
となります。
comealngは標準Cライブラリにしか依存していないため、標準Cライブラリが動く環境ならどこでも動きます。
ドキュメントはREADMEにあります。
インストールは
> git clone https://github.com/ab25cq/comelang
> cd comelang
> sh fast_build.sh && sh clean-self-host.sh
で行えます。
> sh all_build.sh
でエディッターvin, シェルshsh, テキストインタプリタzedがコンパイルされます。
webサーバーとdatabaseサーバーは
> cd webweb;
> sh all_build.sh
で立ち上がります。localhostにhttpsでサイトが表示されます(CA認証を無視しないといけませんが)