Copperは、Cの代替として意図された個人プロジェクトとして開発された、最小限の低レイヤプログラミング言語です。この言語は、Cのバックエンドを維持しながらRubyのような構文を採用している点が特徴であり、この設計選択は、ある言語を用いて自身のソースコードをコンパイルするプロセスであるブートストラップを容易にします。Cのバックエンドを活用することで、この言語は既存の低レイヤインフラとのインターフェース能力を犠牲にすることなく、システムレベルのプログラミングに対してより表現豊かな構文を提供することを目指しています。
この言語は、ジェネリクスや、クラスおよび暗黙的な`self`キーワードなどのオブジェクト指向(OOP)構造を含む、いくつかの高レベルな機能を組み込んでいます。しかし、そのOOP機能の範囲については議論の余地があり、一部の観察者は、オブジェクト指向的な設計を促進する一方で、Ponyのようなより専門的な言語に見られる成熟度には欠けている可能性があると指摘しています。著者は個人のブログを通じて言語の進化を記録しており、言語のコアアーキテクチャから例外を意図的に除外した決定など、特定の設計上のトレードオフを詳細に説明しています。
表現豊かな構文にもかかわらず、Copperの技術仕様は現在のドキュメントでは部分的に不透明なままです。ユーザーからは、具体的なメモリモデル、ガベージコレクタを使用しているか、およびCとのABI(Application Binary Interface)互換性に関する質問が寄せられています。標準ライブラリには`free`関数を備えたアロケータが含まれていますが、提供されている主要な例ではメモリの解放がどのように処理されるかが明示的に示されていません。さらに、この言語のUnicodeサポートや特定のコンパイルターゲットは未定義のままであり、複雑な本番用システムへの適合性については疑問が残っています。
