Mojo の1.0 が正式にリリースされました。
https://mojolang.org/
オープンソースにもなったようですが、とりあえずバイナリ版をインストールして試してみたいと思います。
しかしかなりのマシン性能が要求されるようで、持っている Raspberry Pi では動かすのに問題がありそうです。
そこで、今回は windows 11 にインストールしてみたいと思います。しかしながら、Windows 11用のバイナリは用意されていないようです。試しに Windows 11で動くLinux 環境 WSL を使って見ることにします。coLinux日記なので、比較的なじみのある方法ですね。
https://learn.microsoft.com/ja-jp/windows/wsl/install
ここから=======
右クリックして [ 管理者 として実行] を選択して管理者モードで PowerShell を開き、wsl --install コマンドを入力して、コンピューターを再起動します。
ここまで=======
なので、まずはこの手順通り WSL コマンドをインストールしてみます。
「管理者:Windows PowerShell」というウィンドウを開きます。
PS C:\windows\system32> wsl --install
許可されていません (403)。
PS C:\windows\system32>
うまくいかないので、管理者でログインして、PowerShellの代わり?に「コマンド プロンプト」で試して見ます。つまり、
「管理者: コマンド プロンプト」というウィンドウを開いたら実行できました。
C:\Users\espiya> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Ubuntu-26.04 Ubuntu 26.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-16.0 openSUSE Leap 16.0
SUSE-Linux-Enterprise-15-SP7 SUSE Linux Enterprise 15 SP7
SUSE-Linux-Enterprise-16.0 SUSE Linux Enterprise 16.0
kali-linux Kali Linux Rolling
Debian Debian GNU/Linux
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
AlmaLinux-10 AlmaLinux OS 10
archlinux Arch Linux
FedoraLinux-44 Fedora Linux 44
FedoraLinux-43 Fedora Linux 43
eLxr eLxr 12.12.0.0 GNU/Linux
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_10 Oracle Linux 8.10
OracleLinux_9_5 Oracle Linux 9.5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
この中で、Ubuntu をインストールしてみます。
C:\Users\espiya> wsl --install Ubuntu
要求された操作には管理者特権が必要です。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
C:\Users\espiya>
再起動しました。
ここまでもっともらしく書いていましたが、結構試行錯誤したので残念ながらログがとってありません。
WSLも癖があるので面白そうですがその話はひとまず置いておいて、Mojo をインストールしてみます。
https://mojolang.org/install/
uv を使ってインストールせよと書いてあったので試してみたのですが、色々エラーが出たりしてログがとってありません。
history コマンドで、かろうじて実行した内容があったのであくまで参考までに示します。
28 which curl
29 curl -LsSf https://astral.sh/uv/install.sh | sh
30 ps
31 source ~/.local/bin/env
32 which uv
33 uv pip install mojo
34 uv venv
35 uv pip install mojo
54 uv pip install --system mojo
55 uv pip install --upgrade mojo
詳しいことは省略して、結局今回はこんな感じで Mojo がインストールされました。
どこにインストールされたのかというと、~/.venv の下です。
$ ls ~/.venv
CACHEDIR.TAG bin lib lib64 pyvenv.cfg
実行するために、~/mojo.sh というファイルを作成しました。
$ cat mojo.sh
export PATH=$HOME/.venv/bin:$PATH
export LD_LIBRARY_PATH=$HOME/.venv/lib64:$HOME/.venv/lib
$
$ source mojo.sh
$
$ mojo --version
Mojo 1.0.0 (ed45d567)
$
なんとか wsl で Mojo が動きました。ヘルプも見てみましょう。
$ mojo --help (一部 DeepL で翻訳しました。)
NAME
mojo — The Mojo(ここはMojoのマークで省略) command line interface.
SYNOPSIS
mojo <command>
mojo [run-options] <path>
mojo [options]
mojo
DESCRIPTION
The `mojo` CLI provides all the tools you need for Mojo development, such
as commands to run, compile, and precompile Mojo code. A list of all
commands are listed below, and you can learn more about each one by
adding the `--help` option to the command (for example, `mojo precompile
--help`).
However, you may omit the `run` and `repl` commands. That is, you can run
a Mojo file by simply passing the filename to `mojo`:
mojo hello.mojo
And you can start a REPL session by running `mojo` with no commands.
You can check your current version with `mojo --version`. For version
information, see all the [Mojo releases](https://mojolang.org/releases/).
ここから=======
`mojo` CLI は、Mojo 開発に必要なすべてのツールを提供しており、
Mojo コードの実行、コンパイル、プレコンパイルを行うコマンドなどが含まれます。すべての
コマンドの一覧は以下に示されています。各コマンドの詳細については、
コマンドに `--help` オプションを追加することで確認できます
(例:`mojo precompile --help`)。
ただし、`run` および `repl` コマンドは省略可能です。
つまり、`mojo` にファイル名を指定するだけで Mojo ファイルを実行できます:
mojo hello.mojo
また、コマンドを指定せずに `mojo` を実行することで、REPL セッションを開始できます。
現在のバージョンは `mojo --version` で確認できます。バージョン情報については、
[Mojo のリリース一覧](https://mojolang.org/releases/)をご覧ください。
=======ここまで
COMMANDS
run — Builds and executes a Mojo file.
Mojo ファイルを作成して実行します。
build — Builds an executable from a Mojo file.
Mojo ファイルから実行ファイルをビルドします。
repl — Launches the Mojo REPL.
Mojo REPL を起動します。
debug — Launches the Mojo debugger using the command-line interface or an external editor.
precompile — Precompiles a Mojo package.
format — Formats Mojo source files.
doc — Compiles docstrings from a Mojo file.
demangle — Demangles the given name.
OPTIONS
Diagnostic options
--version, -v
Prints the Mojo version and exits.
Cache management options
--print-cache-location
Prints the Mojo compile cache (.mojo_cache) location and exits.
--clear-cache
Removes the Mojo compile cache (.mojo_cache) after confirmation. Pass
'-f' / '--force' to skip the confirmation prompt.
Common options
--help, -h
Displays help information.
--help-hidden
Displays help for hidden options.
$
Mojo コマンドは何も指定しないと、REPL (Read-Eval-Print Loop) が起動されてプログラムが実行されます。
試して見ます。
Mojo quickstart
https://mojolang.org/docs/manual/quickstart/
からMojo プログラム analyzer3.mojo を作って試して見ます。
$ cat analyzer3.mojo
def main():
print("Temperature Analyzer")
# [Float64] tells Mojo the 'list' type at compile time
var temps: List[Float64] = [20.5, 22.3, 19.8, 25.1]
print("Recorded", len(temps), "temperatures")
for index in range(len(temps)): # The range is [0, len(temps)]
print(t" Day {index + 1}: {temps[index]}.C")
このプログラムを実行してみます。
$ mojo analyzer3.mojo
Temperature Analyzer
Recorded 4 temperatures
Day 1: 20.5.C
Day 2: 22.3.C
Day 3: 19.8.C
Day 4: 25.1.C
$
run コマンドを指定してみます。
$ mojo run analyzer3.mojo
Temperature Analyzer
Recorded 4 temperatures
Day 1: 20.5.C
Day 2: 22.3.C
Day 3: 19.8.C
Day 4: 25.1.C
$ ls
analyzer3.mojo
$
build コマンドを指定してみます。
$ mojo build analyzer3.mojo
/home/espiya/.venv/bin/mojo: error: unable to find suitable c compiler for linking
$
$ ls
analyzer3.mojo
$
$ which cc
$
この環境では、cコンパイラがないのでできない?みたいです。
というわけで、今回はここまでとしたいと思います。