#包管理器 #WASM模块 #C/C++ #现代 #应用程序 #链接 #动态

应用程序 tarantella

Tarantella是一款针对C/C++ WASM应用程序(主模块)和WASM库(侧模块)的现代包管理器,旨在实现动态链接!

15个版本 (6个破坏性版本)

0.7.3 2021年9月10日
0.6.9 2021年9月3日

#511 in WebAssembly

每月28次下载

AGPL-3.0

42KB
835

Tarantella包管理器 💃🖤

Tarantella是一款针对C/C++ WASM应用程序(主模块)和WASM库(侧模块)的现代包管理器,旨在实现动态链接!

需求

如果您注意到使用 tapm 时出现奇怪的行为,那么可能需要更新一个或多个需求版本。我已经创建并使用过 tapm,使用的版本如下: emcc v2.0.29basic-http-server v0.8.1,以及 gh v2.0.0

为什么使用Tarantella?

Tarantella通过作为几个优秀工具的包装器,使启动、构建、测试和分发WASM应用程序和库变得容易。

要启动您的应用程序,运行 tapm new "<app_name>" [-s](使用 -s 使其成为侧模块)。这将自动创建一个具有以下内容的C(但可以轻松转换为C++)WASM应用程序:

  • 一个空的git仓库,
  • 一个用于所有要动态链接的侧模块的依赖项文件夹,
  • 一个用于您即将发布的所有版本的发布文件夹,
  • 一个src文件夹,其中包含一个起始的 main.c 文件,
  • 一个 .gitignore
  • 一个 Makefile 以简化编译,以及
  • 一个包含您项目所有相关信息 Tarantella.toml 文件。

要构建您的应用程序,运行 tapm build。这将使用创建的 MakefileTarantella.tomlMakefile 中指定的构建目录创建一个新版本。

WASM 主模块使用 index.html 文件初始化。要测试您的浏览器中的主模块,请运行 tapm run [-p <some_port_>] —— 这将启动一个 basic-http-server

发布应用时,Tarantella 依赖于 GitHub。有两种选择

  • 如果您的存储库已经在 GitHub 上有一个公共远程源:Tarantella 将直接在那里发布您的版本。
  • 如果您的存储库没有远程源,或者有一个私有远程源,或者有一个不在 GitHub 上托管的远程源:Tarantella 将创建一个名为 <app_name>_releases 的 GitHub 存储库并发布您的版本。

要发布您的应用,请运行 tapm login 登录到 GitHub,然后运行 tapm publish 创建一个新的版本。如果您没有 GitHub 账户,请运行: tapm register 获取有关如何注册 GitHub 的更多信息。

要添加对您的应用的依赖,请运行 tapm add <owner>/<dependency_name> [<version>] 和任何 Tarantella 库(即通过 tapm publish 发布的库),它们将被自动下载并添加到动态链接编译时在您的 Makefile 中需要链接的依赖项列表中。

为什么不使用 WAPM 呢?

截至目前,WAPM 只允许分发 .wasm 模块。如果您的 WASM 应用包含像 JS 库这样的东西,或者您已将动态库编译为 .o 文件,那么您将不得不单独分发这些文件 —— 这类事情可能会大大增加,例如,设置具有多个动态链接库的 WASM 应用程序的复杂性。

安装

cargo install tarantella

用法

tapm is a modern package manager for C/C++ WASM apps.

USAGE:
    tapm <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    add         Add a new dependency to your wasm app (e.g., tapm add "danbugs/dancing_web" ["0.2.0"])
    build       Build your wasm app
    help        Prints this message or the help of the given subcommand(s)
    login       Login to GitHub to publish your wasm app with Tarantella
    new         Create a new wasm app (e.g., tapm new "dancing_web" 
[-s])
    publish     Publish a new release of your wasm app to GitHub with Tarantella (if your code is private, your
                release will be published to a separate repo)       
    register    Register to GitHub to publish your wasm app with Tarantella
    run         Start an HTTP server to test your main module (e.g., tapm run [-p 8000])

有关子命令的更多信息,请运行: tapm <subcommand> --help

路线图

请查看 Tarantella 的 GitHub 项目板以查看已实现的子命令 此处

免责声明

这个包管理器是新的,绝对不可能是没有错误的。但是,这是一个我关心的项目,所以我会尽最大努力修复您在使用 tapm 时遇到的所有问题。要提交错误,请参阅

依赖项

~14–29MB
~435K SLoC