kitech / cygo

A toy programming language base on Golang and compile to C, no name yet

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Compile Go to C, with a generic library contains Go core features, like goroutine,channel,GC.

That's will generate minimal binary. The farther plan is compile any Go package to C.

The pain of Go

  • Too large binary size
  • Not zero cost call with C
  • Builtin string/array/map no methods
  • Too verbosity error handling, not like the Go2 try error handling proposal

Features

  • goroutine
  • channel
  • defer
  • GC
  • CGO
  • interface
  • closure
  • string/array/map with lot builtin methods
  • catch statement error handling ( )
  • unused var warning, not error
  • for range => for in
  • type foo struct => struct foo
  • unsafe.Pointer => voidptr
  • uintptr => usize
  • seamless C symbol use
  • zero cost C call
  • all variables reference

Install

cd $GOPATH
git clone https://github.com/kitech/cygo
cd cygo/bysrc
go build -o cygo

Example

./cygo ./tpkgs/hello
cmake .
make

more examples/tests https://github.com/kitech/cygo/tree/master/bysrc/tpkgs/

Source code structure:

Supported important syntax

  • defer
  • closure
  • select

Todos

  • dynamic stack resize
  • correct and more safe point for GC
  • support more OS/platforms
  • so much to do

Supported original Go packages

  • unsafe
  • errors

资料

About

A toy programming language base on Golang and compile to C, no name yet


Languages

Language:Go 59.3%Language:C 33.8%Language:Nim 3.9%Language:ANTLR 1.5%Language:C++ 0.5%Language:Shell 0.4%Language:CMake 0.3%Language:Makefile 0.3%Language:V 0.0%Language:GDB 0.0%