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コンパイラがないのでできない?みたいです。

というわけで、今回はここまでとしたいと思います。