embarcadero

What Can You Do With RAD Studio 12? Webinar

Hello everyone. I hope you’re all keeping safe and well. We’ve had a huge amount of interest in RAD Studio 12 Athens our latest release of the Delphi and C++ IDE from Embarcadero. Thanks for your feedback which is overwhelmingly positive, and also for letting us know anything which is not quite right too. In any release the complexity of the engineering which goes into it always means there are some things to tweak and suboptimal bits ranging from the annoying to the downright broken. With a release like Athens which is absolutely enormous it was inevitable there would be some things which would need some additional love. We plan a patch as soon as we are able to knock out any gremlins. Table of Contents We know you have a personal relationship with your code and the IDE What is RAD Studio and what can I do with it? When are the RAD Studio Winter Webinars on? The first Winter Webinar covered What Can You Do With RAD Studio 12 Where can I find the slides for the “What can you do with RAD Studio 12 webinar”? We know you have a personal relationship with your code and the IDE I can’t emphasize enough; we are not a faceless monolithic corporation. Embarcadero is full of people who are strongly passionate about providing the best IDE for modern software development we can. We listen to the whole truth of anything you have to say, for example when you’re super-happy with something like the new Visual Assist integration, the multiline strings, or my personal favorite the huge integration of Skia into the very fibers of RAD Studio. But the whole truth means we also listen where we are not giving you what you want too, and we take it very seriously. Sometimes we’re not great at making it clear and the lack of a comment on a social media post or quality report can make people feel like we are ignoring you. I want to reiterate, again, and again, we’re here, and we’re listening. You can also email me directly at [email protected] and I will respond to you personally. It is quite literally my job to be there for you. I am not going to provide technical support – there are a load of people much better at doing that than me – and I’m not going to wrangle discounts and freebies – but I am going to be there to make sure your questions are answered, and if I don’t have the answers myself, I will find someone who does. What is RAD Studio and what can I do with it? RAD Studio is an incredible tool for creating apps for Windows, Mac, iOS, Android, and Linux and it does so in what I personally completely believe is the easiest and most efficient way possible with several significant advantages over doing it with other tools. That’s why I am here at Embarcadero. In fact, it’s why we’re all here. With that in mind, for the next couple of months there is going to be a torrent of webinars from me which put that belief to the test and demonstrate how RAD Studio can create apps for all sorts of platforms and devices. The first webinar earlier this week covered an […]

Read More

Modern Examples For The New Modern C++ Builder 12

Hello C++ Developers, Yilmaz here from LearnCPlusPlus.org. This month, the new RAD Studio 12, the new C++ Builder 12, and the new Delphi 12 were released packed full of great features, optimizations, and improvements. We’ve had some great positive and encouraging feedback especially about one of the great features of C++ Builder 12 the new Visual Assist (VA) with code completion, refactoring, and very powerful navigation. Feedback for the CLANG C++ compiler preview is also very encouraging for the future of C++ Builder. It is another big step introducing a new 64bit bcc64x CLANG (15.x) compiler (Version 7.60), which supports C++11, C++14, C++17, and partially the C++20 standards. There were many new features in IDE, libs, components, and compilers on both C++ Builder and Delphi side. Please see below for details. This week we have 3 new post picks from LearnCPLusPlus.org that can be used with the new C++ Builder 12. The first post pick is about the std::is_final type trait that can be used to detect if a class or a method is marked as a final or not. The second post is about the new begin() and end() iterators that come with C++14 and are used to define the start of iteration and the end of the iteration. The other new post is about the std::integer_sequence is a class template for the sequence of integers that is generated at compile-time. It has been 3 years since we start adding posts to our educational LearnCPlusPlus.org site, it has a broad selection of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a treasure-trove of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples. RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are powerful tools for modern application development. Where I can I learn C++ and test these examples with a free C++ compiler? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great, easy to understand examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the type of post. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new articles with very simple examples that can be used with: The free version of C++ Builder 11 CE Community Edition or a professional version of C++ Builder  or free BCC32C C++ Compiler and BCC32X C++ Compiler or the free Dev-C++ Read the FAQ notes on the CE license and then simply fill out the form to download C++ Builder 11 CE. How to use modern C++ with C++ Builder? In C++11, the final specifier is used for a function or for a class that cannot be overridden by derived classes, and there was no way to check if that class or method is the final. In C++14, there is a std::is_final type trait that can be used to detect if a class or a method is marked as a final or not. In the first post, we explain how we can use the std::is_final type trait in C++14 and C++17. Iterators are one of the […]

Read More

『RAD Studio 12 Athens』の提供開始

本日、Embarcaderoは、RAD Studio、Delphi、C++Builder 12 Athensをリリースしました。RAD Studio 12 Athensリリースには、製品の将来の基盤となるエキサイティングな新機能が満載されています。 Table of Contents 主な新機能 C++向けの重要な革新 Delphiの素晴らしい追加機能 新しい基盤としてのFireMonkeyとSkia MDIとタブ付きUIアーキテクチャによるVCLのモダナイゼーション Delphi RTL、データ、その他の新機能 RAD Studio IDEの改善 RAD ServerとInterBase 多数の機能改善と要望への対応 RAD Studio 12 Athensのリリース情報 主な新機能 以下はRAD Studio 12 で導入された主な機能の概要です。次のセクションで詳細を説明いたします。 C++BuilderのIDEにVisual Assistを統合し、高水準なC++言語のコード補完、コードナビゲーション、名前変更リファクタリングを提供 大幅に更新されたWin64向けのCLANGベースC++コンパイラのプレビュー。最新のC++標準言語機能をサポートし、外部ライブラリやC++コードとの統合を強化 お客様からの要求に対応するため、複数行の文字列リテラルを含むDelphi言語を追加 FireMonkeyでのSkiaのサポート。FireMonkeyの新しい基盤の採用により、すべてのターゲットプラットフォームにおいて、グラフィックスと UI コントロールのレンダリングでより高いパフォーマンスと品質を提供 VCLのMDIと新しいタブUIアーキテクチャを再構築し、お客様は最小限の労力で既存のプログラムにHighDPI とスタイル設定のサポートを追加することによって、既存のアプリケーションをモダナイズ 新しいFireDAC Query by Example (QBE)コンポーネントにより、データのフィルタリングが容易になりました。またDelphi向けの新しいJSONウィザードによってXMLと同様に、一般的なJSON形式のデータをオブジェクトにマッピング可 IDE の生産性と品質が大幅に向上し、RAD Studio を日常的なタスクで、さらに簡単かつ迅速に使用可能に! RAD Server のスマート ID をサポートし、RAD Server の使いやすさを維持しつつ、お客様がホストする REST API をより強力かつ柔軟に対応 C++向けの重要な革新 このリリースでは、C++Builder と C++ ツールチェーン(RAD Studio でも利用可能)に重点を置いています。エンバカデロの開発チームは、C++コンパイラとツールチェーンのモダン化、コード補完による驚異的な生産性の提供、Visual Assistの統合によるリファクタリングとナビゲーションの追加という2 つの重要な C++ の改善に焦点を当ててきました。 C++ツールチェーンのアップグレードは、C++サポートの驚くべき全面的な見直しです。Clangの新バージョンだけでなく、CおよびC++ランタイムライブラリ、STL(C++標準テンプレートライブラリ)、さらにリンカとデバッガも含まれています。 この大規模な取り組みの目標は 最近のライブラリやプロジェクトで見かけるC++コードを実行できること サードパーティ製ライブラリを簡単に使用できること 最新の安全なコーディング標準の活用 よりパフォーマンスの高いアプリの提供 優れたデバッグ機能を備えた最新のC++標準を提供 などを目指しています。 またリンクやSTLのような分野を直接改善し、COFFやPDBオブジェクトフォーマットやデバッグ・フォーマットを使用するようなWindowsプラットフォーム標準に移行することを目指しています。この機能の詳細については、こちらのブログをご覧ください。 12.0では、コマンドラインコンパイラとして利用可能な新しいC++ツールチェインのプレビューを提供しています。 エンバカデロでは、既存のC++コンパイラと並行して、この新しい C++ ツールチェインの IDE 統合、および VCLやFireMonkey UX ライブラリを含む RAD Studio の Delphi ライブラリとの統合に引き続き取り組んでいきます。これらのアップデートが利用可能になり次第、サブスクリプションでお客様に提供する予定です。 12.0におけるC++Builderのもう1つの重要な革新は、これまで Visual Studio でしか利用できなかった、世界をリードする C++ 生産性ツールである Visual Assist テクノロジの統合によってもたらす機能としてコード補完、コードナビゲーション、リファクタリングなどを含む、より優れたコード インサイトの提供です。これらは、コーディング中に頻繁に呼び出されるコード補完から、開発者が手作業でコードベースを検索する代わりにコードの関連部分を簡単に見つけられるナビゲーション、コードの整理と安全性を支援するリファクタリングまで、一般的な開発作業を支援する重要な生産性ツールです。 RAD Studio 内では、シンボルと参照の検索、プロジェクトのアウトラインの表示、実装から宣言への移動、およびリファクタリング名の変更など、Visual Assist 機能の重要な初期サブセットが利用可能になります。 Delphiの素晴らしい追加機能 Delphiコンパイラ側では、12.0から長い文字列リテラル、三重引用符で制限された複数行の文字列リテラルのサポートなど、小さいながらも優れた拡張機能がいくつか追加されており、SQL、HTML、JSON、XML、および同様の複数行テキストを簡単に埋め込むことができます。 この機能の詳細については、こちらのブログをご覧ください。 またDelphi 12 コンパイラは、Win32/Win64 互換性の強化、NaN 浮動小数点数比較のサポート強化、すべてのプラットフォームでの浮動小数点例外の無効化のために、NativeIntの弱い型エイリアス定義も提供しています。 プラットフォームのサポートに関しては、Delphi 12.0 では、Play ストア アプリの提出に対する Google の要件である Android API レベル 33 との互換性を提供しています。 新しい基盤としてのFireMonkeyとSkia UI ライブラリに関してDelphiとC++Builderの両方で RAD Studio 12.0 の最も重要な改善点は、非常に人気のあるクロスプラットフォームレンダリングエンジン Skia を FireMonkey に統合したことです。これはSkia4Delphi オープンソースプロジェクトを統合することで実現されていますが、Vulkan サポート、Skia Shading Language によるエフェクトとフィルタのサポート、WebP エンコーダー、プリンターのサポート、PDF への印刷などの機能拡張も行われています。 RAD Studio Skia のサポートには、ダイレクトAPI、特定の UI コントロール(TSkAnimatedImage、TSkLabel、TSkPaintBox、TSkSvg)、および FireMonkey UI コントロールの UI レンダリングの Skia による自動マッピングがあります。一般的に、Skia はレンダリングの品質とパフォーマンスを向上させます。同じ Skia UI コントロールが VCL Windows ライブラリでも使用できることに注意してください。 ライブラリの将来に向けた新たな強固な基盤を提供する Skia サポート以外にも、最近の多くのプラットフォームの機能強化に合わせて Android サポートを改善し、分割画面サポートを追加し、FireMonkey アプリケーションを横に並べたペインで動作できるようにしました。これは、利用可能な画面の一部のみを使用するものであり、大きな画面を備えたタブレット デバイスで特に便利な機能です。またiOS と Android の両方に対応し、単一行 TEdit コントロールと複数行 TMemo コントロールのIME テキスト入力機能を大幅に刷新しました。 FireMonkey 開発向けの IDE のもう 1 つの重要な改良点は、Apple と Google が要求するすべての解像度でアイコンとスプラッシュ画面を生成するウィザードの導入とAndroid Adaptative Iconのサポートです。詳しくは、こちらのブログを参照ください。 MDIとタブ付きUIアーキテクチャによるVCLのモダナイゼーション エンバカデロは、お客様の既存アプリケーション(多くの場合、ターゲットとする業界で非常に大規模で確立されているもの)の移行を支援するために、VCLのモダナイゼーションを行ってきました。12.0では、昔ながらの、しかし今でも人気のあるMDI(WindowsのMulti Document Interface)モデルを維持することに重点を置いています。新しいリリースでは、MDIアプリケーションの完全なHighDPIサポートを採用し、VCLスタイルも採用できるようになります。これによってマイクロソフトが近年MDIのサポートを軽視していることに起因するプラットフォームの問題を回避することができます。 さらにRAD Studio 12.0では、新しいTFormTabsBarコントロールにより、MDIからの簡単な移行や全く新しいモデルとして、新しい MDI タブ付きフォーム のUI(Google Chromeや他の多くの人気アプリのようなもの)が導入されました。VCLライブラリには、高DPI画面向けのフォント管理が改良されています。 またVCL の改善の一環として、新しいリリースでは、作業の簡素化に役立つ多数の新しいデザイナーが導入されています。新しい文字列リストエディタ、複数行文字列エディタ、ボタン、ラジオグループ、パネルのクイック設定ダイアログがあります。これらの便利なツールのいくつかは、もともとKSVC(Konopka Signature VCL Controls)の一部でしたが、このKSVCのアドオンコントロールパックのインストールが不要になり、最初から誰でも利用できるようになりました。 コア機能となるRTL定義の他に、Delphi開発者がコンポーネントライブラリで公開していないWindowsプラットフォームAPIを簡単に呼び出せるように、Object Pascal に変換された完全な Windows API ヘッダーの新しいユニットセットを作成しました。このAPI変換には311個のDelphiヘッダーファイルと41MBのコードが含まれ、Microsoftが提供するプラットフォームAPI全体をカバーしています。 さらに、新しいインターフェイス、プロパティ、イベントにより、Edgeブラウザの統合が改善され、前回のリリース以降のプラットフォームWebView 2コントロールの改良に対応しました。そして VCL のさらなる改善点としては、非常に柔軟なTControl 列挙子、Desktop Windows Manager (DWM)の機能強化、ダブルバッファリングモードへの変更が挙げられます。 Delphi RTL、データ、その他の新機能 他のDelphiコアランタイムライブラリにも多くの改良が加えられており、C++Builderでも活用されています。また主力データベースアクセスライブラリであるFireDACでは、クラシック なQBEモード(Query-By-Example)のサポートが追加され、簡単なデータフィルタリング条件を入力するためのUIを開発できるようになりました。 さらに、FireDAC コンポーネントは、特定のクエリコントロールの SQLコマンドの種類の制限、複数の SQL コマンドの禁止、実行時にSQL クエリの変更をブロックなど、開発者がアプリケーションのセキュリティを向上させるための追加機能を提供します。これらの改善により、他の業界のベストプラクティスと併用することで、開発者はアプリケーションのセキュリティを向上できるようになります。 RAD Studio 12.0 では、新たに JSON データバインディングウィザードも導入されています。 JSON データバインディングウィザードでは、JSON データ構造に基づいて、新しいファイルにストリーム出力するためDelphi データ型を作成することができます。 RAD Studio IDEの改善 もちろん、IDE にも多数の変更点があります。 まずは、機能インストーラの新しいUXで、製品の初期インストールや、後から機能やプラットフォームを追加する際に使用されます。このダイアログボックスは、最新のVCLコントロールを使用して、動作とUIが完全に再設計されました。以前の複数ステップの設計とは異なり、追加アドオンを含むすべての主要なインストールオプションが1ページにまとめられているため、ユーザーにとって非常に使いやすくなっています。また、新しいダイアログでは、インストールの問題が発生した場合に、より適切なエラー情報も提供されます。 次に呼び出しスタック、構造体ビュー、 構造ペインのような多くのサブウィンドウでIDE カラー パレットを使用した構文の強調表示が追加されています。またソースコードの検索、ナビゲーションツールバーの機能、複数の編集ウィンドウの使用、その他多くの小さな調整も改善されています。 そしてC++BuilderのVisual Assist統合の導入に加え、Code Insightに使用されるDelphiLSPのサポートもさらに改善されました。例えば、たとえば、コード補完に言語キーワードが含まれるようになり、補完中にコード テンプレートがコード文脈的に正しい領域に表示されるほか、ジェネリックスや補完配列または配列型のサポートが強化されました。 最後に、RAD Studio はコードエディタ向けの新しい ToolsAPI をさらに拡張し、開発者やサードパーティベンダーが IDE 向けのさらに柔軟なプラグインを作成できるようにしました。 RAD ServerとInterBase RESTサーバーAPI ホスティングプラットフォームである RAD Server には、いくつかの注目すべき改善点があります。 最も大きな変更点は、スマート ID モデルを簡単にサポートできるようになったことで、標準ライブラリを使用して、サーバーが公開するリソースに対してより優れた識別子を定義できるようになりました。RAD Server は、パフォーマンスの向上、データ ページングの改善、セッション認証の向上、および全体的な品質も提供します。 最後に、RAD Studio の新バージョンでは、最近リリースされた InterBase 2020 Update 5 のDeveloper Editionと組み込み版(ToGo、IBLite)が提供されています。 多数の機能改善と要望への対応 RAD Studio 12.0のリリースでは、上記で紹介した機能に加え、IDE を始め、Delphi RTL ライブラリ、VCL UI ライブラリ、FireMonkey クロスプラットフォームライブラリ、FireDAC などのデータアクセスレイヤ、HTTP クライアントおよびサーバコンポーネント、RAD Server など、複数のサブシステムにおける品質向上に焦点を当てています。 RAD Studio 12 では、Quality Portal(https://quality.embarcadero.com)でお客様から報告された 1,027 件の問題の修正を実施し、877 件のパブリックなバグレポートへの対応、そしてお客様から要望された150 件の新機能に対応いたしました。 RAD Studio 12 Athensのリリース情報 本日より、RAD Studio / Delphi / C++Builder 12の無料トライアルをダウンロードできるようになりました。また、新たにバージョン12を購入される方は、アップデートされた製品ビルドのダウンロードURLが案内されます。アップデートサブスクリプションまたは上位のサポートプログラムに加入されている方は、既存のライセンスを使用してRAD Studio 12をカスタマーポータルサイト(https://my.embarcadero.com)からダウンロード/インストールできます。 詳細については、以下のリンクをご確認してください。 エンバカデロテクノロジーズの製品ページ DocWikiの新機能情報 – RAD Studio 12 Athens RAD Studio 12 Athensのリリースノート RAD Studio 12 Athensのインストール_ノート 12.0で修正されたお客様から報告された問題(英語) RAD Studio 12機能一覧(PDF) GitHubのアップデートされたRAD Studio 12のデモ RAD Studio/Delphi/C++Builder 12.0の詳細について、日本時間11月10日午前1時に開催される “What’s Coming“ウェビナーにご参加ください。 Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy. Start Free Trial   Upgrade Today    Free Delphi Community Edition   Free C++Builder Community Edition

Read More

Three Important C++14 Features That You Can Use In C++ Builder 12

Hello C++ Developers, Yilmaz here, community manager for LearnCPlusPlus.org. This week was another milestone for the C++ developers, the new RAD Studio 12, the new C++ Builder 12, and the new Delphi 12 were released packed full of great features, optimizations, and improvements. There was an amazing 2.5 hours of presentation about RAD Studio 12 (I think it was the longest release presentation in the history of RAD Studio), so many new features, and some big changes in both the Delphi and C++ side. One of the great features of C++ Builder 12 was the new Visual Assist (VA) with Code Completion, refactoring, navigation, and many other useful features for developers. The inclusion of an initial CLANG C++ compiler is another big step introducing a new 64bit bcc64x CLANG (15.x) compiler (Version 7.60), which supports C++11, C++14, C++17, and partially C++20 standards. There were many new features in IDE, libs, components, and compilers. Please see below for details. I love the new logo designs too. They officially released all new C++ Builder, Delphi, and RAD Studio logos here:  https://www.embarcadero.com/news/logo This week we have 3 more post picks from LearnCPLusPlus.org that can be used with the new C++ Builder 12. The first post pick is about std::integral_constant and its () operator that comes with C++14. In the second post, we explain the standard user-defined literals in C++14 and in the third post, we explain containers, associative containers, and heterogeneous lookup in associative containers. Our educational LearnCPlusPlus.org site has a broad selection of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a treasure-trove of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples. RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are powerful tools for modern application development. Where I can I learn C++ and test these examples with a free C++ compiler? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great, easy to understand examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the type of post. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new articles with very simple examples that can be used with: The free version of C++ Builder 11 CE Community Edition or a professional version of C++ Builder  or free BCC32C C++ Compiler and BCC32X C++ Compiler or the free Dev-C++ Read the FAQ notes on the CE license and then simply fill out the form to download C++ Builder 11 CE. How to use modern C++ with C++ Builder? Modern C++ has base class features that can be used with other modern features of C++. The std::integral_constant is the base class for the C++ type traits in C++11, and in C++14, std::integral_constant gained an operator () overload to return the constant value. In the first post, we explain what integral_constant and () operator are in C++14. C++11 introduced new forms of literals using modified syntax and semantics to provide User-Defined Literals (UDL) also known as Extensible Literals. While there was the ability to use them the standard library […]

Read More

[Yukon Beta Blog] C++ and Visual Assist in RAD Studio 12.0

This blog post is based on a pre-release version of the RAD Studio software and it has been written with specific permission by Embarcadero. No feature is committed until the product GA release. RAD Studio 12 is just around the corner, with our release webinar this Thursday! Back in August, we gave a preview webinar of what is being worked on internally for C++, covering a preview of the updated Clang compiler, and our initial integration of Visual Assist. The thing is, we held out a little. The preview was quite conservative. We didn’t share everything. In fact, we only shared about a third of what we’re shipping for Visual Assist. So what’s coming? In the August webinar, we shared that there are three areas for features in the initial implementation: code completion, refactoring and navigation. So, here’s a few teasers for what you’ll see on Thursday and what you’ll be able to use when you install C++Builder 12.0. Table of Contents Code completion Refactoring Navigation C++Builder and RAD Studio 12 are out any day now! Code completion What’s interesting about this image? Hint: It shows code completion doing something that it could never do before in C++Builder. Something pretty magical. Lots more to say about code completion, and Code Insight in general, but we’ll show it on Thursday! Let’s move right along… Refactoring In the preview webinar, we showed one refactoring, Rename. And a rename refactoring is really useful, it would be great to have just that in the first version! But here’s the Refactor menu in C++Builder 12.0: Rename and… three other items. That’s four items when we previewed one. So what are they? Well, the remaining three are not quite refactorings per se (they won’t rewrite or move around code) so much as a kind of code generation, doing or creating something useful for you. The first one is pretty amazing – magical, in fact. I smile every time I use it. The third and fourth are smaller, and are two versions of the same feature (each operation is the inverse of the other one.) What could they be? Navigation In the preview webinar, we previewed Find References — an incredibly useful feature to find where any symbol (method, class etc) is used, or referred to, in your code — and Find Symbol, a feature to find any symbol anywhere in your project group or the headers it uses or… anywhere. But look at this. Four other menu items. The bottom two are small: a Delphi feature that happens to be one of the most-requested navigation features for C++Builder. (They’re two aspects of the same feature, one being the inverse of the other. And though small we think those of you who’ve asked for it will love seeing it added. It’s not actually an existing Visual Assist feature, we added it into Visual Assist specially for C++Builder!) The top two? They’re bigger. What could they be? Well, one opens a dialog. A useful dialog. One, however, opens another menu. This menu: Look at it. Lots more functionality appears. Not only that, but there are submenus. What could they contain? This menu can be invoked another way too, by the way. And for what it’s worth, in the launch webinar I refer to this feature as the most […]

Read More

I first met Philippe Kahn and Turbo Pascal 40 years ago this month

In 1983, I was working for Softsel Computer Products (Softsel) in the product evaluation, support and training group. Softsel had a booth at the Fall 1983 COMDEX (Computer Dealer Expo) conference (November 28 to December 2) in the Las Vegas Convention Center. I sat at a pod in the booth to answer questions about Softsel, products we distributed and to talk with software and device manufacturers that might be looking to have their products distributed to computer stores. During the convention Philippe Kahn (PK) walked by the Softsel booth and stopped for a moment. I said hello to him (not knowing anything about him nor his company). During the conversation, we talked about programming and developer tools. PK mentioned that he had a Pascal compiler that he was selling but that he was not looking to have it distributed (he was selling it direct to programmers using direct mail and an ad in Byte Magazine). Before he left the booth, he gave me two floppy disks containing copies of Turbo Pascal 1.0 (8″ CPM-80 and 5.25 PC-DOS). On one of my breaks, I took the floppy disks into a booth “office” that we had for meetings that also had an IBM PC. I was very excited to see what PK had since I had learned Pascal in 1972 while I was a Computer Science major at Cal Poly San Luis Obispo. I put in the 5.25 floppy disk and started the Turbo.com executable and up popped a menu with a few options. I selected the editor and typed in a short command line “Hello World” program and tried to run it. Amazingly it compiled blazingly fast and the app started up. I had to tell my co-worker and friend Spencer Leyton about this Pascal compiler and how important it was for the CPM and PC programming world. From that day on, Spencer talked with PK to try to convince him to allow Softsel to distribute Turbo Pascal to its network of computer store accounts. While it took awhile to convince PK, Spencer eventually got PK to agree to a distribution contract. Spencer went on to get a job at Borland. I continued working at Softsel for awhile and eventually Spencer convinced PK to interview me for a job. My job interview was on PK’s racing sailboat in Monterey Bay. We had dinner afterwards at the Crow’s Nest restaurant at the Santa Cruz harbor. I went back to Los Angeles and was given a job offer. I accepted the offer and started in June of 1985 (a little less that 2 years after I first met PK). I enjoyed the privilege of working with Anders Hejlsberg and a talented global team of dedicated employees for more than three decades (and about 4 million air miles). I seems unreal that its been almost 40 years since I first met PK and first tried Turbo Pascal. It’s also been more than 50 years since I first tried the Pascal language while I was in college. Back then you could build programs for two platforms: PC-DOS and CPM-80. Most amazingly, you can still create “textbook” Pascal applications with every release of Turbo, Borland, Kylix and Delphi Pascal compilers. And, with Delphi, you can create modern applications that can run on desktops, web servers, clouds […]

Read More

What Are The Useful Mutex, Shared Mutex and Tuple Features In Modern C++

Hello C++ Developers, Embarcadero and Whole Tomato developer teams are working hard on to release of RAD Studio 12, and it seems like we may (or not) see the early released version of the new C++ compiler before 2024. The new 64-bit Clang Toolchain in RAD Studio 12 may have a new bcc64x C++ compiler. The news is amazing. Before it comes, let’s keep learning some modern C++ features to heat up from now on. This week, we have 3 more modern C++ features that can be used in C++ Builder. The concurrency support library in modern C++ is designed to allow your programs to read and write data securely in thread operations allowing us to develop faster multi-thread code. There are differences between mutual exclusion (std::mutex) and shared mutex (std::shared_mutex) and in another post, we explain these. The tuple (std::tuple) was introduced in C++11 and improved in C++14. In the last post, we explain tuple addressing via type features that come with the C++14 standard. Our educational LearnCPlusPlus.org site has a broad selection of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a treasure-trove of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples. RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are powerful tools for modern application development. Table of Contents Do you want to know some news about C++ Builder 12? How to use modern C++ with C++ Builder? How to learn modern C++ for free using C++ Builder? Where I can I learn C++ and test these examples with a free C++ compiler? Do you want to know some news about C++ Builder 12? RAD Studio, C++ Builder 12 may come with a new C++ compiler that has 64bits Windows CLANG 15.x based compiler. If you want to discover what’s coming in the next RAD Studio 12. Secure your spot from this link now: https://ow.ly/NZFQ50PVL13 Some of the technical features are: Uses Clang 15 Uses LLVM’s lld as the linker Emits COFF64 object files (note this means Delphi can also emit COFF64 object files in 12.0: the compiler option “-jf:coff” is specified by our targets files when the “-JL” or “-JPHN[E]” options are specified) Emits PDB format debug info Uses the Itanium ABI (not Microsoft ABI) Uses LLVM’s libc++ STL Uses UCRT for the C runtime Uses a mix of LLVM and MinGW for the C++ runtime Targets Win64 Named bcc64x Here are more details about it, Win64 Clang Toolchains in RAD Studio 12 How to use modern C++ with C++ Builder? In modern C++, the concurrency support library is designed to solve read and write data securely in thread operations that allow us to develop faster multi-thread apps. This library includes built-in support for threads (std::thread), atomic operations (std::atomic), mutual exclusion (std::mutex), condition variables (std::condition_variable), and many other features.  In C++14, in addition to mutex, there is a shared_mutex which is an instance of the class located in  header. In the first post, we explain using shared mutexes locking in Modern C++. There are differences between mutual exclusion (std::mutex) which comes with C++11 and shared mutex (std::shared_mutex) which comes with C++14 standards. In the next post, we explain a frequently asked mutex question in modern C++, what are […]

Read More

Three Important Modern C++ Features That Can Be Used With C++ Builder

Hello C++ Developers, this week, we have 3 more modern C++ features that can be used in C++ Builder. In C++14 you can store string in strings using modern programming methods. In the first post, we explain how you can preserve the string format especially when we use a string in a string with /”. Containers are powerful data storage arrays in modern C++ and they are very useful for iterating and searching data with their amazing methods and properties. In another post today we explain what the containers in modern C++ are, their types, and their methods. In C++14, there is a new decltype that is used with the auto keyword, and in the last post pick, we explain how you can use it. Our educational LearnCPlusPlus.org site has a broad selection of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a treasure-trove of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples. RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are powerful tools for modern application development. Table of Contents Where I can I learn C++ and test these examples with a free C++ compiler? How to use modern C++ with C++ Builder? How to learn modern C++ for free using C++ Builder? Do you want to know some news about C++ Builder 12? Where I can I learn C++ and test these examples with a free C++ compiler? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great, easy to understand examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the type of post. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new articles with very simple examples that can be used with: The free version of C++ Builder 11 CE Community Edition or a professional version of C++ Builder  or free BCC32C C++ Compiler and BCC32X C++ Compiler or the free Dev-C++ Read the FAQ notes on the CE license and then simply fill out the form to download C++ Builder 11 CE. How to use modern C++ with C++ Builder? In development, sometimes we want to preserve the string format especially when we use a string in a string with /”. In C++14 and above, there is a std::quoted template that allows handling strings safely where they may contain spaces and special characters and it keeps their formatting intact. In the first post, we explain the std::quoted template, and how you can use it with in examples. Containers are powerful data storage arrays in modern C++ and they are very useful to iterate and search data with their amazing methods and properties. The C++ Standards library defines 4 container types. In the next post, we explain containers and types in modern C++. The auto keyword arrives with the new features of C++11 and the standards above. In C++14, there is a new decltype that is used with the auto keyword. […]

Read More

[Yukon Beta Blog]: Win64 Clang Toolchains in RAD Studio 12

This blog post is based on a pre-release version of the RAD Studio software and it has been written with specific permission by Embarcadero. No feature is committed until the product GA release. RAD Studio 12 is just around the corner, and we have exciting news to share! In August, we ran an unusual webinar where we shared a behind-the-scenes look at some technology we’ve been working on for C++Builder and the C++ side of RAD Studio. One of the things we previewed was an upgraded Clang-based Win64 compiler – though not just an upgrade but some major technological improvements to core areas, with a new STL, a new linker, and more. It is a thorough rework of the entire toolchain with a strong eye to making the right decisions for quality and longevity. Table of Contents New Clang Platform standards High performance for the compiled code. Optimised runtimes Excellent language standards compatibility. Excellent quality in all areas, such as exception handling A robust STL. A linker that can handle anything Tech details Status Toolchains in version 12.0 Overall New Clang The C++ compiler is foundational to RAD Studio. Through the Clang & LLVM work, we make LLVM available to Delphi. And, of course, we need a modern, powerful C++ compiler to provide our C++ developers with the best source compatibility, libraries, app performance, and more. Our goals for the work are: Very high quality. A robust STL. A linker that can handle anything and any quantity you give it. Excellent quality in all areas, such as exception handling Excellent language standards compatibility. High performance for the compiled code. Optimised runtimes. Match platform standards as much as possible How are we meeting those? Let’s go in reverse order. Platform standards The new toolchain is based on Clang 15*. The previous toolchain used the ELF object file format, a primarily Unix/Linux format, for historical reasons that are actually (long story) related to Kylix. For this toolchain, we are moving to COFF, which is the standard object file format for Windows compilers of any compiled language. Similarly, we are using the PDB debug format, which again is the standard. While we are not officially supporting any third party tools, there are many tools developers use which understand COFF & PDB and we hope that by adhering to the platform norms, we open up the opportunity to use a wide variety of tools with your apps and C++Builder. [*] Clang 15 was current when this work started, and we are avoiding changing the wheels while the car is in motion. We plan to remain up to date and move forward with Clang itself in future. High performance for the compiled code. While we are aiming for correct compiled code behaviour above all else, we are also aiming for high performance. The new toolchain’s technology generates more optimized code, and allows additional optimisations that were not previously possible in future. Optimised runtimes A C++ toolchain has multiple layers: a C runtime (providing things like printing to a console or file IO), a C++ runtime (providing things like exception handling), and the STL (providing C++ library functions like standard IO, algorithms, collections, etc.) For our toolchain, we are replacing all three. Image showing three layers of the C++ runtime: standard library, C++ RTL, and C […]

Read More

Win64 Clang Toolchains in RAD Studio 12

This blog post is based on a pre-release version of the RAD Studio software and it has been written with specific permission by Embarcadero. No feature is committed until the product GA release. RAD Studio 12 is just around the corner, and we have exciting news to share! In August, we ran an unusual webinar where we shared a behind-the-scenes look at some technology we’ve been working on for C++Builder and the C++ side of RAD Studio. One of the things we previewed was an upgraded Clang-based Win64 compiler – though not just an upgrade but some major technological improvements to core areas, with a new STL, a new linker, and more. It is a thorough rework of the entire toolchain with a strong eye to making the right decisions for quality and longevity. Table of Contents New Clang Platform standards High performance for the compiled code. Optimised runtimes Excellent language standards compatibility. Excellent quality in all areas, such as exception handling A robust STL. A linker that can handle anything Tech details Status Toolchains in version 12.0 Overall New Clang The C++ compiler is foundational to RAD Studio. Through the Clang & LLVM work, we make LLVM available to Delphi. And, of course, we need a modern, powerful C++ compiler to provide our C++ developers with the best source compatibility, libraries, app performance, and more. Our goals for the work are: Very high quality. A robust STL. A linker that can handle anything and any quantity you give it. Excellent quality in all areas, such as exception handling Excellent language standards compatibility. High performance for the compiled code. Optimised runtimes. Match platform standards as much as possible How are we meeting those? Let’s go in reverse order. Platform standards The new toolchain is based on Clang 15*. The previous toolchain used the ELF object file format, a primarily Unix/Linux format, for historical reasons that are actually (long story) related to Kylix. For this toolchain, we are moving to COFF, which is the standard object file format for Windows compilers of any compiled language. Similarly, we are using the PDB debug format, which again is the standard. While we are not officially supporting any third party tools, there are many tools developers use which understand COFF & PDB and we hope that by adhering to the platform norms, we open up the opportunity to use a wide variety of tools with your apps and C++Builder. [*] Clang 15 was current when this work started, and we are avoiding changing the wheels while the car is in motion. We plan to remain up to date and move forward with Clang itself in future. High performance for the compiled code. While we are aiming for correct compiled code behaviour above all else, we are also aiming for high performance. The new toolchain’s technology generates more optimized code, and allows additional optimisations that were not previously possible in future. Optimised runtimes A C++ toolchain has multiple layers: a C runtime (providing things like printing to a console or file IO), a C++ runtime (providing things like exception handling), and the STL (providing C++ library functions like standard IO, algorithms, collections, etc.) For our toolchain, we are replacing all three. Image showing three layers of the C++ runtime: standard library, C++ RTL, and C […]

Read More