Giter Site home page Giter Site logo

onitama / openhsp Goto Github PK

View Code? Open in Web Editor NEW
174.0 12.0 21.0 71.77 MB

Hot Soup Processor (HSP3)

Home Page: https://hsp.tv

License: BSD 3-Clause "New" or "Revised" License

AngelScript 0.04% HTML 6.97% Makefile 0.69% Assembly 0.02% C++ 39.61% C 47.11% CMake 0.12% Lua 0.01% Shell 0.92% Awk 0.01% Python 0.48% M4 0.11% Roff 0.01% Perl 0.03% DIGITAL Command Language 0.09% Objective-C++ 0.32% sed 0.01% JavaScript 0.34% Batchfile 0.01% Haskell 3.12%
hsp3 raspberry-pi windows-desktop opengl gui development-tools ide gamedev linux sdl2

openhsp's Introduction

OpenHSP/Hot Soup Processor(HSP3)

OpenHSP/Hot Soup Processor (HSP3) is a scripting language system that anyone can easily use. You can easily build applications such as game programs, screen savers, tools and practical software using images just by writing a text script. HSP3 can run the development environment on Microsoft Windows, Linux / Raspberry Pi . For detailed installation and usage, refer to the manual for each platform.

HSP3 Linux / Raspberry Pi version manual https://www.onionsoft.net/hsp/v36en/doclib/hsp3linux_pi.html

HSP3 Windows Manual https://www.onionsoft.net/hsp/v36en/doclib/hsp3win.html

OpenHSP/Hot Soup Processor (HSP3)は、誰でも手軽に使うことのできるスクリプト言語システムです。 テキストによるスクリプトを書くだけで、簡単に画像を使ったゲームプログラム、スクリーンセーバー、ツールや実用ソフトなどのアプリケーションを構築することができます。 https://www.onionsoft.net/hsp/v36en/index.htm

Windows installation

You can download the original Windows version from the official HSP3 page. You can choose between the installer (.exe) or the archive (.zip). https://hsp.tv/make/downlist.html

The latest beta test version can be downloaded from this link. https://www.onionsoft.net/wp/archives/category/hsp/download

Linux installation

It works in the Linux GUI environment (X Window System). Some features work using OpenGL and SDL libraries. If you can connect to the network, get the repository directly with the git command.

git clone https://github.com/onitama/OpenHSP

If you have an archive, extract the contents to any directory and compile the source. To compile, you need an environment where you can run gcc and make. The following libraries are required when compiling, so please check in advance.

OpenGL ES2.0 or later / EGL SDL1.2 gtk+-2

For Debian (Ubuntu), you can install the library from the package manager as follows.

sudo apt update
sudo apt install libgtk2.0-dev
sudo apt install libglew-dev
sudo apt install libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
sudo apt install libgles2-mesa-dev libegl1-mesa-dev

The repository contains only the source, so you need to compile it with make. (If it doesn't compile correctly depending on your Linux version or distribution, you'll need to fix it.)

cd OpenHSP
make

The necessary tools have been compiled and HSP3 is ready for use.

Raspberry Pi installation

It runs on Raspberry Pi, Raspberry Pi2, Raspberry Pi3, Raspberry Pi4, Raspberry Pi zeo. It runs on Raspbian (RaspberryPi OS). (Recommended version is September 2017 Kernel version 4.9 or later) Please use it with Raspbian running and a keyboard and mouse connected in advance. hsp3dish, hsp3gp (HGIMG4) and hsed (script editor) only work in GUI environment. Extract the latest version from github to any directory and compile the source. To compile, you need an environment where you can run gcc and make.

git clone http://github.com/onitama/OpenHSP
cd OpenHSP

Additional libraries are required when compiling. Setup is executed by executing the following command while connected to the network.

./pisetup.sh

The archive contains only the sources and must be compiled by make. (If it doesn't compile correctly depending on the version or distribution of Raspbian, you need to fix it.)

make -f makefile.raspbian

Execute the make command in the directory where the contents of the archive are expanded. The necessary tools have been compiled and HSP3 is ready for use.

  • For Raspberry Pi 4, please install with make in the same way as Linux.
  • Raspberry Pi 4 does not support full-screen execution

Usage

After installation, the following command will be generated.

hsed script editor (simplified version)
hspcmp HSP3 code compiler
hsp3cl HSP3 command line runtime
hsp3dish HSP3Dish runtime
hsp3gp HGIMG4 runtime

Script Editor (Simplified Version) is a GUI application that allows you to write and execute HSP3 scripts. It has basic script editing and load / save functions. You can start it with the following command.

./hsed

You can run the script you are editing by pressing the [F5] key or selecting "Run" from the "HSP" menu. The current version uses hsp3dish as the standard runtime. The sample code corresponding to HSP3Dish is included in the sample folder, so please try it. The character code of the script is treated as UTF-8. Please note that it is different from the character code (SJIS) used by Windows.

For example, a simple script like this can be saved as "test.hsp" to check its behavior. This will display the text "Hello World".

#include "hsp3cl.as"
mes "Hello World."
stop

If you want to know about the commands in the script, move the cursor to a word in the script editor ( for example "mes" ) and then press [F1]. Help about the instruction will be displayed. The sample folder contains samples to test various functions; try scripting with GUI, sprites, and 3D.

If you want to execute the script from the command line, you need to create an HSP object file with hspcmp.

./hspcmp -d -i -u test.hsp

In the above example, the object file "test.ax" is generated from the "test.hsp" file. Pass the generated object file to the runtime for execution.

./hsp3cl test.ax

In the above example, "test.ax" is run at the HSP3 command line runtime. Similarly, you can execute scripts tailored to the runtime such as "hsp3dish" and "hsp3gp". (A GUI environment is required to execute "hsp3dish" and "hsp3gp".)

The Raspberry Pi version runs in full screen. To interrupt the execution, press [ctrl] + [C] or [esc]. Please note that you may not be able to interrupt if the keyboard is not recognized correctly. In addition to the GUI editor, it is also possible to execute in the form of "./hsp3dish ****. Ax" from the command line.

Copyright and license

HSP3 for Linux / Raspberry Pi is treated as a derivative of OpenHSP, and the license is also a modified BSD license compliant with OpenHSP / HSP3.


Hot Soup Processor (HSP) Copyright (C) 1997-2021, Onion Software/onitama, all rights reserved. Made with base technology of OpenHSP.

OpenHSP Copyright (C) 1997-2021, Onion Software/onitama, all rights reserved.

These softwares are provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed.

openhsp's People

Contributors

cielavenir avatar horiki017 avatar intelagense avatar m4saka avatar onitama avatar rollman avatar vain0x avatar zakki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openhsp's Issues

make fails under Linux with gcc 10 or later.

Problem

Since gcc 10, you can write Unicode characters without using the universal-character-name. However, this is a backward-incompatible change and breaks comment of the form

#if 0
<string with Unicode character(s)>
#endif

Some of the source codes in this repository include such comments. For example, src/hsp3dish/geometry.cpp has

#if 0
(注意)
透視変換マトリックスを掛けた後にこのマトリックスを掛ける。

----------解説-------------

...

#endif

and this comment prevents make (and gcc inside it) from completing the build process:

$ make
g++ -Wno-write-strings --exec-charset=UTF-8 -DHSPDISH -DHSPLINUX -DHSPDEBUG -DUSE_OBAQ -c src/hsp3dish/geometry.cpp -o src/hsp3dish/geometry.do
src/hsp3dish/geometry.cpp:580:1: error: extended character 。 is not valid in an identifier
  580 | ���視変換マトリックスを掛けた後にこのマトリックスを掛ける。
      | ^
src/hsp3dish/geometry.cpp:585:70: error: extended character 。 is not valid in an identifier
  585 | 後方クリップ面のZ座標 F,その時のZバッファ値Zf ���する。
      |                                                 ^
src/hsp3dish/geometry.cpp:592:1: error: extended character 。 is not valid in an identifier
  592 | ���なるようにしたい。
      | ^
src/hsp3dish/geometry.cpp:595:14: error: extended character 。 is not valid in an identifier
  595 | z = N/(1-rN) ���なる。
      |              ^
src/hsp3dish/geometry.cpp:601:1: error: extended character 。 is not valid in an identifier
  601 | ���なるような変換マトリックスを用意する。
      | ^
src/hsp3dish/geometry.cpp:608:3: error: extended character 。 is not valid in an identifier
  608 | Z ���ZBufferの値。
      |   ^
src/hsp3dish/geometry.cpp:622:1: error: extended character 、 is not valid in an identifier
  622 | ���すると、
      | ^
src/hsp3dish/geometry.cpp:627:1: error: extended character 、 is not valid in an identifier
  627 | ���れを解くと、
      | ^
src/hsp3dish/geometry.cpp:632:1: error: extended character 。 is not valid in an identifier
  632 | ���なる。
      | ^
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
  641 | ���※※※※※※※※※※※※※※※※※※※※※※※※
      | ^
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
  643 | ���※※※※※※※※※※※※※※※※※※※※※※※※
      | ^
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
make: *** [makefile:425: src/hsp3dish/geometry.do] Error 1

Solution

Solution 1

In the first place, #if 0 is not a multi-line comment. Please just never use it.

Solution 2

If you would really want to stick to #if 0, you can avoid the use of Unicode characters in it. In other words, you may want to write the comments not in Japanese but in English.

Solution 3

If you would really want to stick to #if 0 and Japanese comments, you can additionally comment the lines out by // or /* ... */. For example,

#if 0
//(注意)
//透視変換マトリックスを掛けた後にこのマトリックスを掛ける。

//----------解説-------------

//...

#endif

Windows: chdpm 命令で絶対パスを指定すると読み込みが失敗する

不具合の説明
chdpm 命令で絶対パスを指定すると、エラー 12 で DPM ファイルの読み込みが失敗します。
カレントディレクトリを適切に変更し、相対パスを指定した場合、問題は発生しません。

再現手順

  1. C:\tmp\mydata.dpm を配置する
  2. C:\src\a.hsp で chdpm "C:\\tmp\\mydata.dpm" を実行する
  3. エラーが表示される

期待する動作
chdpm 命令でエラーが発生しない。後続処理で bload 命令などでファイル内容を読み込むことができる。

スクリーンショット
なし

実行環境

  • OS: Windows
  • バージョン: 3.7β4

追加情報
FilePack::LoadPackFile 関数で行われるカレントディレクトリの補完が絶対パスの入力を考慮しないせいで、誤ったファイルパスに対するアクセスが行われていると推測します。

この不具合報告は HSPTV!掲示板 #96757 に掲載した内容と同じものです。

インストール時、makeコマンドが失敗する

概要

makeコマンドを実行すると、
src/hsp3dish/emscripten/hgtex.cpp:47:26: 致命的エラー: SDL2/SDL_ttf.h: そのようなファイルやディレクトリはありません #include <SDL2/SDL_ttf.h> ^
のような表示が出て失敗する。

環境

CentOS 7.8.2003
SDL1.2/2
EGL
gtk2

再現方法

  1. Cent7機で環境構築を進める。
    2.git cloneし、フォルダ内にcdする
    3.make実行

Raspberry Pi版HSP上でキーボードやマウスの検出に失敗する

概要

Raspberry Pi版HSP(hsp3dish)において、キーボードやマウス製品によっては、キー入力やマウス入力ができない状態になります。

動作確認環境

  • Raspberry Pi Zero W
  • Raspberry Pi OS buster

以下は問題が発生した製品ですが、どの製品も、Raspberry Pi OS buster のデスクトップ画面を操作する分には問題無く動作することを確認しています。HSP(hsp3dish)の実行時のみ、問題が発生します。

  • Logicool K400r (USB接続ワイヤレスキーボード(タッチパッド付)) ... キー入力もマウス入力も無反応
  • BUFFALO BSKBW03WH (USB接続ワイヤレスキーボード) ... キーボードとマウスの接続順によって、キー入力かマウス入力、どちらかしか受け付けなくなる
  • A4Tech XL-755BK (USB有線接続マウス) ... キーボードとマウスの接続順によって、キー入力かマウス入力、どちらかしか受け付けなくなる。

尚、以下の製品はHSP(hsp3dish)でも動作しました。

  • Lenovo KU-1255 (USB有線接続トラックポイント付キーボード) ... キーボードもトラックポイントも反応。
  • Cherry G230 (G85-23100JAAESF) (USB有線接続キーボード)
  • Logicool VX Nano (USB接続ワイヤレスマウス) ... ただし、BUFFALO BSKBW03WH と組み合わせた時は無反応。
  • ELECOM M-BL21DBSV (USB接続ワイヤレスマウス) ... ただし、BUFFALO BSKBW03WH と組み合わせた時は無反応。

原因

OpenHSP/src/hsp3dish/raspbian/hsp3dish.cpp の initKeyboard()、updateKeyboard() 内で、/dev/input/by-id 以下に event-kbd(キーボード), event-mouse(マウス)が、それぞれ1つずつ出現することを前提にした実装のために問題が発生するようです。

問題が発生するキーボード・マウス製品について調べたところ、/dev/input/by-id に対して、以下の情報を返すことが分かりました。

  • Logicool K400r ... event-mouse は返すが、event-kbd は返さない。また、kbd と mouse0 が同じevent番号に割り当てられる。
  • BUFFALO BSKBW03WH ... event-kbd の他に event-mouse も返す。
  • A4Tech XL-755BK ... event-mouse の他に event-kbd も返す。

結果、Logicool K400r 接続時は、HSPからはキーボードが存在しないものとして扱われてしまい、更に、updateKeyboard() の先頭で、キーボードが見つからないため、マウス入力の解析処理もキャンセルされ、キーボードもマウスも無反応の状態になります。

BUFFALO BSKBW03WH + A4Tech XL-755BK の接続時は、キーボードを1つ、マウスを1つ接続してある状態なのに、HSPからはキーボード2つ、マウス2つが接続されているように見えてしまい、キーボード側、もしくはマウス側の、片方の情報しか取得できない状態になります。

解決策の提案

手元の環境で hsp3dish.cpp の、initKeyboard()、updateKeyboard()、doneKeyboard() に修正を加えて試してみましたが、
以下の処理に変えることで問題が起きていた各製品も利用できるようになることを確認しました。

  • /dev/input/by-id 以下に出現した event-kbd, event-mouse の数だけ、入力機器を監視する。(event-kbd x 2, event-mouse x 2 が出てきたら、計4つの event を監視対象にする。)
  • マウスとキーボードに、別個のeventが割り当てられてる前提ではなく、1つの event の中にキー入力とマウス入力が混在していることを前提にして解析処理をする。

一応、手元で修正・動作確認したファイルも添付しておきます。

hsp3dish.cpp.diff.txt
hsp3dish.cpp.txt

Trac/Subversion から GitHub への移行

HSPTV!掲示板 #95674 より、古くから使用されている Trac/Subversion/MantisBT のあたりを GitHub に移行したいと考えられてはいるものの、実現に至っていないものとお見受けします。HSPTV!掲示板 #97672 にも書き込みましたが、わたしも GitHub への移行を熱烈に歓迎するひとのひとりです。

それから、この onitama/OpenHSP リポジトリは Subversion とは別に時折コミットされているように見えますが、同期状態や運用ポリシーがよくわからず、疑問に思っています。 本リポジトリの現状の位置づけは HSP Linux/Raspberry Pi 向けであることを Subversion の package/linux/readme.txt より発見(以下引用)。

HSP Linux/Raspberry Pi
は、以下のリポジトリ管理に変更されました
https://github.com/onitama/OpenHSP

移行元

移行にあたっての障害

移行にあたって、何が障害となっているのでしょうか?

掲示板の書き込みでは「今後はWindows版も含めた全般についてもgithubに統一する方向で考えています。(今までは文字コードの問題で統一できていませんでした)」と書かれており、ソースコード上の問題はもはや解消しているかのような印象を受けます。

移行に必要なタスク及びマイルストーン

移行には何が必要ですか? 以下は想像にもとづくものです。

  • Subversion から Git への移行
    • 現存するこのリポジトリへの追加コミット? or git svn で Subversion のリポジトリをまるごと移行する
  • HSP3バグトラッキングの移行 (任意)
    • 中に入れないので現状がわかりませんが、必要に応じて登録されている課題を手動で(?) GitHub に登録?
  • Trac の Wiki の移行 (任意)
    • GitHub の Wiki に同じ内容を手動で移管?
  • openhsp organization を作成?
  • 既存の OpenHSP 開発者に周知を行い、古いサイトを読み取り専用にする
  • Releases に過去の各種リリースを掲載する (任意)

makefile.linuxのOBJSからlinux/hsp3ext_sock.oが抜けている

linux/hsp3ext_sock.cppが最近追加されたようですが、対応する.oがOBJS内に追加されていないようです。

※OpenHSPはsvnとgitを併用して開発されているので、こういった報告をどこにすべきかよくわかっていません。報告する場所が別にあるのでしたら申し訳ありません。
※ svnが主なのであればPullRequestsを送るとsvn側がまずいかなと思ったので そうしておりません。 PullRequestsを送るべきであればそのようにいたします。

JS版でのユーザー定義関数内wait/await

現状はユーザー定義関数の実行が無限ループ内で行われるので動作が止まってしまいます。
具体的にはこういったコードで、ユーザー定義関数内で有効な操作があるまで画面更新を行わずawaitループを回すようなプログラムが動きません。
https://github.com/AmefuriTell/amayadori/blob/a5ff39165aac7b11b731e3dd37e5da49ecab1ab9/reversi/Reversi.hsp

解決案の一つとしてはasyncifyを使うと大きな変更なく上のようなプログラムも動くようになりました。
ただし、出力されるhsp3dish.jsのサイズが元の1.9Mから2.4MBに増えました。
これは、asyncifyを適用する関数をコンパイル時に指定すれば軽減できるそうです。
master...zakki:em-asyncify

他の対応として素直にはcode_callfunc()内で実行せずに親側で実行することも考えられますが、手を入れる必要のある個所が多そうです。

#define の特殊展開マクロのバグ

どうやら、repeat loop間で呼び出されたスタックの呼び出し命令が無視されています。

コード例

#define ctype add(%1) %tstack %s1 mes "add " + %1
#define opt %tstack mes "opt " + %o

	add("1")
	add("2")
	add("3")
	add("4")
	add("5")

	repeat 5
		opt
	loop

エラーメッセージ

#HSP script preprocessor ver3.6beta3 / onion software 1997-2020(c)
#Use file [hspdef.as]
#Use file [dish_enhance.as]
#1 unresolved macro(s).[ss.hsp]
        stack
#Fatal error reported.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.