https://bitopia.io https://bitopia.io
mizusato e8fe39696f fix list-based string formatting | 5 gadi atpakaļ | |
---|---|---|
build | 5 gadi atpakaļ | |
parser | 5 gadi atpakaļ | |
runtime | 5 gadi atpakaļ | |
test | 5 gadi atpakaļ | |
transpiler | 5 gadi atpakaļ | |
.eslintrc.json | 5 gadi atpakaļ | |
.gitignore | 5 gadi atpakaļ | |
COPYING | 5 gadi atpakaļ | |
Makefile | 5 gadi atpakaļ | |
README.md | 5 gadi atpakaļ | |
bundle.py | 5 gadi atpakaļ | |
load.html | 5 gadi atpakaļ | |
main.go | 5 gadi atpakaļ | |
repl.js | 5 gadi atpakaļ | |
run.js | 5 gadi atpakaļ | |
test.js | 5 gadi atpakaļ |
KumaChan (ja. くまちゃん) is an experimental programming language, and is still under development.
I have been using JavaScript for several years and can't tolerate the BAD DESIGN of it anymore, so I created a new language.
However, the new language does NOT intend to be a substitution of JavaScript. It's designed for GUI (aka. client-side) programming only, and does NOT intend to be used on server-side. Its design focuses more on abstraction ability rather than performance.
For more details, see documentation.
This repository contains a parser
which defines the syntax of KumaChan, and a transpiler
which is capable to transpile KumaChan code into JavaScript, along with a necessary runtime
library.
The current implementation of runtime
(based on JavaScript) is created for DEMO Purpose and is extraordinarily naive. I don't want to maintain it, and is going to reimplement the whole runtime using Golang. Finally, all JavaScript code in this repository will be wiped. I want the Golang implementation to be the official implementation.
Rewriting the runtime
using Golang may cause difficulty when developing Web applications, because WebAssembly is not widely supported in browsers, meanwhile the binary file of Golang program is very large. (although it does not matter when developing off-line apps using Electron.)
But using JavaScript implementation of the runtime
in production also requires a rewrite of the current code, because the current implementation is too naive to be used in production, and is not integrated with Webpack ecosystem.
Currently I am working on the rewriting of runtime
. After I finished the new runtime
, I am going to integrate GTK2 with it using go-gtk to enable desktop GUI programming for this language. I hope it can start the age of declarative programming for native desktop GUI.
Make sure you have make
, bash
, golang
, python3
and nodejs
installed on your system before building.
$ git clone https://notabug.org/mizusato/KumaChan
$ cd KumaChan
$ make
$ ./repl.js
Note: shebang is NOT supported currently.
$ cat << EOF > /tmp/test.k
module main
print('Change The World')
EOF
$ ./run.js /tmp/test.k
There is a plugin called language-kumachan
for the Atom Editor. It is still naive, therefore incorrect highlight could happen.
LGPL-3.0