Oneへようこそ!
これは、オープン ソースの自己ホスト型ブートストラップシステム プログラミング言語であり、
信頼性が高く効率的なソフトウェアを構築します。
これは、MaxやJohnおよびその他のオープンソースのコントリビュータによって開発されています。
- シンプルさ
- コンパイラ
- 出力ファイルを作成する機能(x86_64、i386)
- システムプログラミング言語
- 中間レベル
- ネットワークおよび API プログラミング
- Web プログラミングに対応(将来予定)
- CSS と HTML の両方に対応したコードを自動生成します。そのため、ウェブサイトを開発するために複数の
One
言語を学ぶ必要がない - CSS で変数を使用するので、データベースから色やサイズを取得することができる
- ページの結果を自動的に最小化する
- CSS と HTML の両方に対応したコードを自動生成します。そのため、ウェブサイトを開発するために複数の
- パフォーマンスと高速
- インラインアセンブリコードをサポート(将来予定)
- 通常モードではユーザーシステムに特定のライブラリとツールを必要としない(将来予定)
- 通常モードで外部ランタイムライブラリを必要としない(将来予定)
- コンパイルを行うために外部コンパイラを必要としない(将来予定)
One
言語の文法はこちら。
- レキサー/パーサー(ほとんど)
- AST ツリー
- VM
- コードジェネレータ(LLVM-C からヒントを得た)
- ランタイムライブラリの開発と機能追加
- この言語のためのウェブフレームワークをデザインする
-
One
言語でコンパイラを書き直す
main {
ret 0
}
C 言語への変換:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
return (int) 0;
}
i32 main {
ret 10
}
C 言語への変換:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
return (int) 10;
}
main {
string in = "Hello, World!"
__ in
return in.length
}
C 言語への変換:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
char *in = "Hello, World!";
printf("%s\n", in);
return (int) strlen(in);
}
別のドラフト:
import web
home {
_ "Hi, Welcome"
}
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
_ "<h1>404></h1>"
}
main {
if system.args.length === 2 {
port = system.args[1]
} else {
port = 8080;
}
web.route.add("/", home)
web.route.add("*", error)
web.listen(port)
return 0
}
別のドラフト:
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
_ `<!doctype html><html><head><title>Error 404</title><meta charset="utf-8"></head><body><h1>404></h1></body></html>`
}
vs
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
page {
title: 'Error 404'
label {
type: 'h1'
_ "Not found!"
}
}
}
main:
// __ "Hello, World!"
_ "Hello,"
io.write(' ')
io.write("World")
__ '!'
end
@start
customName:
_ "Hello, World!\n"
end
@start
void app:
__ "Hello, World!"
end
@start
int customName:
_ "Hello, World!\n"
return 0
end
このアーキテクチャは、Web サイトとネイティブソフトウェアのみを対象として設計されています。将来的には、モバイルアプリ(ネイティブ)でも利用できるようになる予定です。
モバイル構造はまだ完全ではないので、もっと注意深く考える必要があります。
言語の動作を示す例:
title "Name - Main"
description "Descriptions"
/*
キーワードタグはソフトウェア内では使用せず、Web上でのみ使用します。
*/
keyword "keywords"
style {
* {
margin 0
padding 0
}
header {
width "100%"
height "auto"
}
list {
color "red"
}
list item {
display "inline"
padding "10px"
background "yellow"
}
}
header {
list {
item {
_ "Home"
}
item {
_ "About"
}
item {
_ "Contact Us"
}
}
}
CSS/HTML/JS ベースへの変換:
<html>
<head>
<title>Name - Main</title>
<meta name="description" content="Descriptions" />
<meta name="keyword" content="keywords" />
<style>
* {
margin: 0;
padding: 0;
}
header {
width 100%;
height: auto;
}
ul {
color: red;
}
ul li {
display: inline;
padding: 10px;
background: yellow;
}
</style>
</head>
<body>
<header>
<ul>
<li>Home</li>
<li>About</li>
<li>Contact Us</li>
</ul>
</header>
</body>
</html>
このリンクを参照して、語学学習を始めてください。
- GNU / Linux
- Windows
- macOS (未完成)
- BSD
バグレポート、機能リクエスト、ドキュメントの改善など、あらゆる種類のコントリビュートを歓迎します。 質問やディスカッションを行うには、issue を作成するか、One Discord Serverに参加してください。
GitHub でのプルリクエストのやり方がよくわからないという方は、こちらのガイドをご覧ください。
投稿を決意された方は、まずこちらのガイドラインをお読みください。
また、❤️ Patreonでいくらかの寄付をすることで、One
の開発に協力することができます。
コントリビュータの皆様、ありがとうございました!!
このプロジェクトの開発にコントリビュートしたい方は、次のアドレスにメールを送ってください: [email protected]
One
は GNU General Public License v3.0 の下でリリースされています。リポジトリに含まれるLICENSEファイルに記載されている条件を参照してください。