首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏人人都是架构师

    Go每日一库之132:wasm与tinygo

    TinyGO 使用 TinyGo 是一个将 Golang 带入微控制器和现代网络浏览器的项目。他们有一个基于 LLVM 编译的全新编译器。 使用 TinyGo,我们可以生成经过优化以在芯片中执行的微小库。 TinyGo 允许为微控制器编译 Golang 源代码,它也可以将 Go 代码编译为 Wasm。 TinyGo 是一个用于“小地方”的编译器,因此生成的文件要小得多。 查看如何安装tinygo:https://tinygo.org/getting-started/ 安装后,您可以使用 TinyGo 编译任何 Golang 代码。 编译的wasm模块,在加载的时候也要搭配tinygo版本的wasm_exec.js: cp "$(tinygo env TINYGOROOT)/targets/wasm_exec.js" .

    53100编辑于 2025-01-18
  • 来自专栏人人都是架构师

    Go每日一库之132:wasm与tinygo

    TinyGO 使用 TinyGo 是一个将 Golang 带入微控制器和现代网络浏览器的项目。他们有一个基于 LLVM 编译的全新编译器。 使用 TinyGo,我们可以生成经过优化以在芯片中执行的微小库。 TinyGo 允许为微控制器编译 Golang 源代码,它也可以将 Go 代码编译为 Wasm。 TinyGo 是一个用于“小地方”的编译器,因此生成的文件要小得多。 查看如何安装tinygo:https://tinygo.org/getting-started/ 安装后,您可以使用 TinyGo 编译任何 Golang 代码。 编译的wasm模块,在加载的时候也要搭配tinygo版本的wasm_exec.js: cp "$(tinygo env TINYGOROOT)/targets/wasm_exec.js" .

    3.3K30编辑于 2023-09-30
  • 来自专栏运维开发王义杰

    Go: 探索TinyGo在微控制器和IoT中发挥力量

    这使得TinyGo成为物联网(IoT)和嵌入式系统应用开发的理想选择。 TinyGo的特点包括: 高效编译:TinyGo针对小代码体积和降低内存使用进行了优化,适用于资源受限的环境。 微控制器支持:TinyGo支持在微控制器上运行Go代码,适合物联网和嵌入式系统的应用开发。 激进的优化:TinyGo采用激进的优化策略,减少函数调用开销并消除无用代码,产生精简高效的可执行文件。 Go标准库支持:TinyGo与Go的标准库和包生态系统兼容,允许开发者在他们的TinyGo项目中利用现有的Go库和工具。 在智能家居场景中,TinyGo可以用来控制照明、加热、冷却和安全系统等。在制造环境中,TinyGo的轻量化和高效代码使其适合在低成本微控制器上运行,为分布式控制系统部署多个节点提供了经济选择。

    77010编辑于 2024-01-17
  • 来自专栏商业模式策划

    佛萨奇2.0系统丨佛萨奇2.0智能合约系统开发上线版丨佛萨奇2.0开发现成源码功能

    使用TinyGo进行智能合约开发读者对象:本章节主要描述使用TinyGo进行ChainMaker合约编写的方法,主要面向于使用Go进行ChainMaker的合约开发的开发者。 为了最小化wasm文件尺寸,使用的是TinyGO编译器。注意:TinyGo 的功能在 ChainMaker V2.3.0 之后将不再更新。推荐使用 docker-go 进行 Golang 合约的开发。 环境依赖使用 TinyGo 开发用于 ChainMaker 的 wasm 合约,需要安装 TinyGo 编译器,同时注意以下几点:TinyGo对wasm的支持不太完善,对内存逃逸分析、GC等方面有不足之处 TinyGo引擎不支持fmt和strconv包。7.2. 编写TinyGo智能合约7.2.1. 集成的编译器是 TinyGo

    60530编辑于 2022-12-15
  • 来自专栏seth-shi的专栏

    [物联网] 树莓派Pico 点亮屏幕

    工欲善其事必先利其器, 所以首先要把我们的工具配置好 https://tinygo.org/docs/guides/ide-integration/ 在官网中查看对应的工具的配置 我用的是GoLand2021 , 所以按照官网的配置 安装插件 https://plugins.jetbrains.com/plugin/16915-tinygo (直接点击页面的安装, 获取去GoLand2021里File -> Settings -> Plugins -> Marketplace -> 输入 tinygo -> 点击安装即可) 安装好之后, 就会多出一个菜单 File -> Settings -> Go -> TinyGo 这里选择自己对应的开发板, 我这里选择pico 然后务必重启GoLand2021, 再次打开之后就会有针对pico的代码提示 TinyGo插件 接下来需要查看你对应的显示屏类型, 我买的是 /x/drivers" "tinygo.org/x/drivers/ssd1306" ) func main() { machine.I2C0.Configure(machine.I2CConfig

    57410编辑于 2023-12-18
  • 来自专栏为了不折腾而去折腾的那些事

    使用 Docker 和 Golang 快速上手 WebAssembly

    使用 TinyGo 编译器进行编译。 (TinyGo 的代码示例,关于 TinyGo 的讨论,下文中有详细展开,再次不做更多描述) 想要使用 TinyGo,需要先调整之前的 JS Bridge 为 TinyGo 的版本。 cp "$(tinygo env TINYGOROOT)/targets/wasm_exec.js" . TinyGo 异常报错修复 在浏览器控制台中使用 TinyGo 版本的程序,可能会出现一些异常报错,比如会收到:“syscall/js.finalizeRef not implemented” 这类报错 /tinygo/releases/download/v0.21.0/tinygo_0.21.0_amd64.deb -o tinygo_0.21.0_amd64.deb && \ dpkg -i

    1.4K31发布于 2021-11-25
  • 来自专栏瓜农老梁

    Mesh9# 使用wasm上报envoy埋点信息

    构建方式 Step1 安装tinygo工具包 brew tap tinygo-org/tools Updating Homebrew... ==> Tapping tinygo-org/tools Cloning Step2 安装tinygo brew install tinygo // ... ==> Installing dependencies for tinygo-org/tools/tinygo: binaryen ==> Installing tinygo-org/tools/tinygo dependency: binaryen ==> Pouring binaryen--102.catalina.bottle.tar.gz /usr/local/Cellar/binaryen/102: 1,456 files, 38.4MB ==> Installing tinygo-org/tools/tinygo /usr/ local/Cellar/tinygo/0.21.0: 4,719 files, 362.4MB, built in 20 seconds ==> `brew cleanup` has not been

    1.4K40编辑于 2021-12-21
  • 来自专栏seth-shi的专栏

    [物联网] 开篇入手-点亮小灯

    version go version go1.17.8 windows/amd64 Tiny Go 安装教程官方说的很详细了 选择匹配自己系统版本的, 比如我的是https://github.com/tinygo-org /tinygo/releases/download/v0.22.0/tinygo0.22.0.windows-amd64.zip 解压到任意目录, 然后将解压后的文件c:\tinygo\bin(假设解压到 C盘根目录) 加入系统环境变量 然后打开一个新的cmd窗口运行tinygo version, 看到输出版本, 就代表安装成功 tinygo version tinygo version 0.22.0 windows

    46310编辑于 2023-12-18
  • 来自专栏seth-shi的专栏

    [物联网] 开篇入手-点亮小灯

    version go version go1.17.8 windows/amd64 Tiny Go 安装教程官方说的很详细了 选择匹配自己系统版本的, 比如我的是https://github.com/tinygo-org /tinygo/releases/download/v0.22.0/tinygo0.22.0.windows-amd64.zip 解压到任意目录, 然后将解压后的文件c:\tinygo\bin(假设解压到 C盘根目录) 加入系统环境变量 然后打开一个新的cmd窗口运行tinygo version, 看到输出版本, 就代表安装成功 tinygo version tinygo version 0.22.0 windows

    46010编辑于 2023-12-18
  • 来自专栏k8s技术圈

    使用 WebAssembly 对 Istio 进行扩展

    等,目前应用比较多是 tinygotinygo 支持的包可以查看 https://tinygo.org/docs/reference/lang-support/stdlib/ 进行了解。 环境准备 首先安装 tinygo 工具,前往 https://github.com/tinygo-org/tinygo/releases/tag/v0.30.0 下载对应的版本,比如我们这里是 Linux 系统,可以使用下面的命令进行安装: # linux $ wget https://github.com/tinygo-org/tinygo/releases/download/v0.30.0/tinygo0.30.0 .linux-amd64.tar.gz $ tar -xvf tinygo0.30.0.linux-amd64.tar.gz $ export PATH=$PATH:~/tinygo/bin $ tinygo 部署插件 代码编写完成后,我们就可以使用 tinygo 来编译了,执行以下命令: tinygo build -o main.wasm -scheduler=none -target=wasi main.go

    1.3K10编辑于 2023-12-12
  • 来自专栏瓜农老梁

    Mesh7# wasm扩展Envoy使用详解

    第三种是重点发展方向通过其他语言编写filter,通过wasm编译运行嵌入在Envoy中运行,通过可移植的二进制指令实现,以下特性: 动态加载到Envoy中执行 无需修改Envoy代码容易维护 支持较多开发语言比如tinygo docs.solo.io/web-assembly-hub/latest/tutorial_code/build_tutorials/building_assemblyscript_filters/ 先试用tinygo What language do you wish to use for the filter: cpp rust assemblyscript ▸ tinygo 执行后: wasme init melon-filter✔ tinygo✔ istio:1.7.x, gloo:1.6.x, istio:1.8.x, istio:1.9.x 目录结构 -rw-r--r-- ) } return types.ActionContinue} 四、wasm构建Filter Filter构建 构建的过程耗时较长,多等一会 wasme build tinygo

    83430编辑于 2021-12-04
  • 来自专栏HelloGitHub

    GitHub 官方大动作频频「GitHub 热点速览 v.22.24」

    相较于 GitHub 官方的大动作,本周的开源项目就比较 Tiny,比如用在命令行等小地方的 Go 编译器 TinyGo、dalle-playground 则是知名项目 DALL-E 的在线试玩版,nginxconfig.io 本周特推 1.1 Go 编译器:TinyGo 本周 star 增长数:800+ TinyGo 一个用于微控制器、WebAssembly(Wasm)和命令行工具等小地方的 Go 编译器。 led.High() time.Sleep(time.Millisecond * 1000) } } GitHub 地址→https://github.com/tinygo-org /tinygo 1.2 文本生图:dalle-playground 本周 star 增长数:1,100+ New dalle-playground 是 DALL-E 的在线试玩版本,你可以通过输入一个文本描述来生成特定的语句图片

    68110编辑于 2022-09-26
  • 来自专栏商业模式策划

    佛萨奇2.0原力元宇宙马蹄莲智能合约系统开发详情及原理

    TinyGo对wasm的支持不太完善,对内存逃逸分析、GC等方面有不足之处,比较容易造成栈溢出。 在开发合约时,应尽可能减少循环、内存申请等业务逻辑,使变量的栈内存地址在64K以内,要求tinygo version >= 0.17.0,推荐使用0.17.0。 TinyGo对导入的包支持有限,请参考:https://tinygo.org/lang-support/stdlib/,对列表中显示已支持的包,实际测试发现支持的并不完整,会发生一些错误,需要在实际开发过程中进行测试检验 TinyGo引擎不支持fmt和strconv包。1.4. 智能合约开发语言和虚拟机“长安链·ChainMaker”目前已经支持使用Golang、Rust、Solidity、TinyGo、C++进行智能合约开发,每种开发语言实现的合约由不同的虚拟机执行,在将合约发布到链上时通过

    93320编辑于 2022-11-24
  • 来自专栏人人都是架构师

    Go WebAssembly 入门(一)

    本文使用原生go build,生成的wasm文件大约在1.4M左右,在生产环境中这个体积是很大的,优化go的wasm体积可以使用tinygo来build,同样的代码使用tinygo构建之后约为22K,甚至比 参考https://tinygo.org/ 本文介绍Go WebAssembly入门,前提已经安装Go 1.11及以上版本。

    83120编辑于 2023-09-10
  • 来自专栏商业模式策划

    原力元宇宙MetaForce佛萨奇马蹄链开发详情版丨MetaForce佛萨奇2.0马蹄链智能合约系统开发稳定版

    在长安链上,用户可以通过高级语言(Golang、Rust、Solidity、TinyGo和C++)来编写智能合约,经过编译后,以二进制文件、WASM、EVM字节码的形式存储在区块链中,用户可以通过发送交易来触发执行智能合约中的代码 不同语言的SDK受限于语言本身特性和编译器的支撑能力,比如go语言支持函数同时返回多个数据,而tinygo编译器对垃圾回收支持存在缺陷,加上区块链系统本身为智能合约提供的运行内存大小受限、调用栈深度受限 目前ChainMaker已经支持的智能合约开发SDK包括Golang、Rust、Solidity、TinyGo和C++。3. 智能合约生命周期管理长安链的整体生命周期管理流程如下图所示:4.

    77120编辑于 2022-11-24
  • 来自专栏架构驿站

    DeepFlow 是如何通过 Wasm Plugin 实现业务可观测性?

    需要注意的是,本项目中 Golang SDK 编译需要用到 TinyGo 工具链。 为什么需要 TinyGoTinyGo 是一个专门为嵌入式设备和 WebAssembly(Wasm)环境设计的 Go 编程语言工具链。 TinyGo 的目标是提供一个高效的 Go 编译器和运行时环境,以便在小型设备和嵌入式系统上运行 Go 程序。 相较于标准的 Go 编译器,TinyGo 优化了编译输出的大小和性能,以适应资源受限的环境。 3、编译为 Wasm Plugin # 建议 go 版本不低于1.21,tinygo 版本不低于 0.29 tinygo build -o wasm.wasm -target wasi -gc=precise

    1.8K103编辑于 2023-11-08
  • 来自专栏Golang语言社区

    Golang语言情怀--第77期 区块链技术-长安链长安链基础知识介绍

    c++: emmake makerust: wasm-pack buildtinygo: tinygo build -no-debug -opt=s -o main.wasm -target wasm 功能清单说明 功能名称 描述 合约引擎 GASM、WASMER、WXVM、EVM、NATIVE、VM-DOCKER GO分别对应 tinygo、rust、 c++、 solidity、golang等合约语言 有向无环图 使交易可并行执行的方案 KV存储引擎 LevelDB、BadgerDB、MySQL 使用K、V格式存储数据 SQL合约存储引擎 MySQL,SQLite 使用结构化存储数据 SQL合约引擎 tinygo

    1.1K40编辑于 2022-06-07
  • 来自专栏CNCF

    开发 Wasm 协议插件指南

    创建插件工程 一、前置准备 安装 go 链接:https://golang.org/doc/install 安装 tinygo 链接:https://tinygo.org/getting-started /linux/ 提示:如果已有 go 不需要重复安装,tinygo 用于编译成 wasm 插件。 tinygo 也可以从 github 直接下载解压,把解压后的 bin 目录加入到 PATH 目录。

    1.1K20发布于 2021-05-07
  • 来自专栏深度学习与python

    开发 Wasm 协议插件指南

    创建插件工程 前置准备 安装 go链接: https://golang.org/doc/install 安装 tinygo链接: https://tinygo.org/getting-started/linux / 提示:如果已有 go 不需要重复安装,tinygo 用于编译成 wasm 插件。 tinygo 也可以从 github 直接下载解压,把解压后的 bin 目录加入到 PATH 目录。

    1.4K30发布于 2021-05-07
  • 来自专栏云云众生s

    WebAssembly的4个发展动态

    Go 已将其部分 WebAssembly 支持让给了 TinyGo(该项目的负责人 Ron Evans 也在 Wasm I/O 上进行了展示)。 在 Wasm I/O 的最后一天,TinyGo(以及其他一些东西)的创建者 Ron Evans 介绍了一个用于物联网 (IoT) 嵌入式开发的开源框架。

    38010编辑于 2024-04-23
领券