https://bitopia.io https://bitopia.io

mizusato e8fe39696f fix list-based string formatting 5 سال پیش
build fbb5eb1ac3 change directory structure 5 سال پیش
parser c8c895cd9b fix and add test for finally {} 5 سال پیش
runtime e8fe39696f fix list-based string formatting 5 سال پیش
test 638bd8ff92 add deg2rad() and rad2deg() 5 سال پیش
transpiler 17add12c98 update comments 5 سال پیش
.eslintrc.json 327ce0bffc fix eslintrc 5 سال پیش
.gitignore fbb5eb1ac3 change directory structure 5 سال پیش
COPYING c54dc9a449 add license 5 سال پیش
Makefile c02aab0914 avoid hard-coded constants 5 سال پیش
README.md b351074523 fix typo 5 سال پیش
bundle.py c02aab0914 avoid hard-coded constants 5 سال پیش
load.html c87296f5da async unit test 5 سال پیش
main.go 5caf1d677a enhance main() 5 سال پیش
repl.js 143da82fb5 more clear parser error 5 سال پیش
run.js 1acccdaf9c add source file executor 5 سال پیش
test.js 581f04c7c0 separate std wrapper and containers, add set 5 سال پیش

README.md

熊語言・KumaChan Programming Language

KumaChan (ja. くまちゃん) is an experimental programming language, and is still under development.

Yet Another Programming Language?

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.

Development Progress

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.

Usage

Build

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

Run the REPL

$ ./repl.js

Run a script file

Note: shebang is NOT supported currently.

$ cat << EOF > /tmp/test.k
module main
print('Change The World')
EOF
$ ./run.js /tmp/test.k

Syntax Highlighting

There is a plugin called language-kumachan for the Atom Editor. It is still naive, therefore incorrect highlight could happen.

LICENSE

LGPL-3.0