Zenは急げ！
Zen言語完Zen理解ガイド
SWEST22 2020/8/21
コネクトフリー株式会社

アウトライン
1. コネクトフリーについて
2. Zen言語○ 主な特長
3. ETHOS
4. デモ
5. ハンズオン○ hello world○ zengrep写経

Zen言語について

アンケートZen言語をご存知ですか？

なぜ今までの組込み開発はC言語？
1. 高速、バイナリサイズが小さい、低電力○ 組込みシステムのHWリソース制約の問題
2. SDKとかRTOSがC言語だから○ 既存資産やエコシステム含めた開発効率の問題

これからの組込み開発はZen言語？
●
●
●
●
●
●
●
●

高い安全性
実行速度が速く、バイナリサイズが小さい
複雑すぎず便利に使える言語仕様
ポインタなど低レベルな操作が可能
豊富な標準ライブラリ
C言語との相互運用性が高い
言語組込みのテストフレームワーク
多様なコンパイルターゲット

ビルドプロセスと標準ライブラリによる移植性の高さ！

これまでの組込み開発○ 開発環境整備■ コンパイラ (xxx-gnu-toolchain...)設定の整合性は■ ライブラリ / ドライバ (xxx-SDK)
保証できない！
■ RTOS (xxx-RTOS)○ 開発環境に合わせてアプリケーション書く■ 既存ライブラリを使いたければポーティングApplication
OSUART

SPII2Cアプリケーションだけ書いたらよしなに取り計らってほしい！
OS有り環境だろうがベアメタル環境だろうが動きなさいな！2020年でしょ！

C 言語と Zen 言語のビルド比較

アプリケーションだけ書いたら必要なファイルが勝手にコンパイルされる！

でもまだ足りない！！
OS有り環境とベアメタル環境との差異をどう埋める？

ETHOS

Zen 言語 & Zen エコシステム
appZenアプリケーション
Zen Standard Library
Platform (OS or Baremetal) Abstraction Layer
Platform GlueETHOSdrivers

boardZen®
(Language & Compiler)

Host Platform

async executor

安全性チェック↓↓ Zenコンパイラのみでコンパイル可能↓↓コンパイラが必要最小限なバイナリ生成同じプログラム

app

Host Platform (Windows, Linux, MacOS) / Baremetal / Browser
ARM / RISC-V / AVR / x86 (32 & 64 bit) / wasm
Baremetal(Embedded)

Zenコンパイラは依存関係を解析
pub fn main() void {std.debug.warn(“hello”);// ...

ユーザーはアプリルートファイルとターゲットプラットフォームを指定$ zen build -Dboard=nrf52840_pca10056-Dapp-root=hello.zen

Zen std library
debug:
pub fn warn(/../) void {platform.warn(format, args: …);
}

io:

file:

...

pub const nRF = struct {serial0 = A.uart.define();pub fn warn(...) {serial0.write();}};pub const HiFive = struct {serial0 = B.uart.define();spi0 = B.spi.define();};};drivers for nRF

drivers for HiFivedrivers for Wio Terminaluart

spii2cpub const WioTerminal = struct {serial0 = C.uart.define();spi0 = C.spi.define();// ...

uart// ...

spii2cuart

spii2cZenコンパイラは依存関係を解析
pub fn main() void {std.debug.warn(“hello”);// ...

$ zen build -Dboard=nrf52840_pca10056-Dapp-root=hello.zen

Zen std library
debug:
pub fn warn(/../) void {platform.warn(format, args: …);}
pub const nRF = struct {serial0 = A.uart.define();pub fn warn(...) {serial0.write();}};drivers for nRF
uart...

アプリで使われる必要最小限のものコー
ドだけを自動的にコンパイルするデモ
1. マルチターゲットビルド
2. PlatformGraphics

ハンズオン
1. hello world
2. zengrep写経

質問あればslackへどうぞ
https://zen-lang.org/ja-JP/community → 「Join the Slack Community」

アンケートZen言語を完Zenに理解できましたか？

END
ANY INFORMATION PRESENTED HEREIN (INCLUDE MATERIALS PREPARED, THE CONTENTS OF ANYDISCUSSION) IS FOR ILLUSTRATIVE PURPOSES ONLY AND SHOULD NOT BE CONSTRUED AS A
RECOMMENDATION OF ANY INVESTMENT OR SECURITY. THE INFORMATION PRESENTED HEREIN IS NOTINTENDED TO BE AN ADVERTISEMENT OR MARKETING OF ANY INVESTMENT AND/OR FINANCIAL
INSTRUMENT. ANYONE WHO VIEWS THIS PRESENTATION ACKNOWLEDGES THAT THIS IS NOT ASOLICITATION.
The information herein is for information purposes only and represents the current view of connectFreeCorporation as of the date of this presentation. Because connectFree must respond to changing marketconditions, it should not be interpreted to be a commitment on the part of connectFree, andconnectFree cannot guarantee the accuracy of any information provided after the date of thispresentation.
CONNECTFREE CORPORATION AND ITS SUBSIDIARIES MAKE NO WARRANTIES, EXPRESS, IMPLIED OR
STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.