Red は、プログラミング言語Rebolの限界を克服するために設計されたプログラミング言語です。[ 3 ] Red は、2011 年に Nenad Rakočević によって発表され、[ 4 ]命令型プログラミング言語と関数型プログラミング言語の両方の要素を備えています。その構文と一般的な使用法は、インタプリタ型 Rebol 言語と重複しています。[ 5 ]
Red の実装の選択は、フルスタックプログラミング言語を作成することを意図しています。[ 4 ] [ 6 ] Red は、非常に高レベルのプログラミング(ドメイン固有言語(DSL) およびグラフィカル ユーザー インターフェイス(GUI)) と低レベルのプログラミング(オペレーティングシステムおよびデバイス ドライバ) の両方に使用できます。このアプローチの鍵は、言語がRed/SystemとRedの 2 つの部分から構成されていることです。[ 7 ]
ifx>y [print"Hello"]if(x>y){printf("Hello\n");}Red は他のツールチェーンに依存しないように設計されており、独自のコード生成を行っています。[ 3 ]そのため、コマンドラインスイッチを使用して、Red がサポートする任意のプラットフォームから他の任意のプラットフォームに Red プログラムをクロスコンパイルすることが可能です。 [ 6 ] Red と Red/System はどちらも、 BSD 3 条項(修正) ライセンスの下でオープンソース ソフトウェアとして配布されています。ランタイム ライブラリは、より寛容なBoost ソフトウェア ライセンスの下で配布されています。
バージョン0.6.4以降、Redにはガベージコレクタ「Simple GC」が含まれています。[ 9 ]
Red は、2011 年 2 月にオランダで開催されたRebol & Boron カンファレンス[ 10 ]で、開発者の Nenad Rakočević 氏によって紹介されました。2011 年 9 月には、ソフトウェア自由の日2011で Red プログラミング言語がより多くの聴衆に紹介されました。 [ 11 ] [ 12 ] Rakočević 氏は、Cheyenne HTTP サーバーの作成者としても知られる、長年の Rebol 開発者です。[ 13 ]
Red の構文と意味はRebolの構文と意味に非常に近い。[ 4 ] [ 14 ] Rebol と同様に、メタプログラミングとドメイン固有言語(DSL) を強力にサポートしており、そのためダイアレクト (組み込み DSL の作成) に効率的なツールです。Red には Red/System という名前のダイアレクトが含まれており、これはシステム プログラミング機能を提供する C レベルの言語です。[ 7 ] Red は、ダイナミック リンク ライブラリ(DLL) (libRed)として他のツールや言語と簡単に統合でき、非常に軽量です (約 1 MB)。また、さまざまなプラットフォームにクロス コンパイルでき (以下の#クロス コンパイルのセクションを参照)、必要なプラットフォーム (たとえば Android の .APK) 用のパッケージを作成できます。[ 7 ] Red には、基盤となるリアクティブ データ フロー エンジンに基づく完全にリアクティブなクロス プラットフォーム GUI システム、SVG に匹敵する 2D 描画ダイアレクト、コンパイル時および実行時のマクロ サポート、40 を超える標準データ型も含まれています。
以下は、2011年のソフトウェア自由デーで発表されたRedの目標のリストです。[ 11 ] [ 12 ]
現在、Red上で開発されている商用アプリケーションは以下のとおりです。
Redの開発は2段階で計画されています。
2018年現在サポートされているクロスコンパイル対象には以下が含まれます: [ 4 ]
の主な機能は、シンプルGC(ガベージコレクタ)と呼ばれるものです。より高度なGCは将来的に計画されています。