尧图精选

Dart SDK 2026 谷歌编程之夏(GSoC)项目指南:六项实战议题与仓库源码解析

🕒 发布时间:2026/9/24 19:30:04 📁 来源:尧图网络
编程语言编译器语言运行时标准库开发工具【免费下载链接】sdkThe Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.项目地址https://gitcode.com/gh_mirrors/sdk1/sdk点击查看免费下载本篇技术指南以 Dart SDK 仓库docs/gsoc/Dart-GSoC-2026-Project-Ideas.md收录的 2026 年度 Google Summer of CodeGSoC候选项目清单为核心逐项拆解每个议题的技术背景、实现路径、预期成果与考核样例并结合当前仓库中dart:ffi、dart:io、VM Service 协议等源码给出底层印证。读者读完可完整掌握 Dart 官方为 2026 年 GSoC 划定的六个技术方向理解每项议题所需的技能栈、工作量档位与提案写作要点。申请流程与时间线根据文档顶部提示Google Summer of Code 2026 的申请窗口截止于 2026 年 3 月 31 日最终入选项目名单在 summerofcode.withgoogle.com 官网公布完整时间线见官方 GSoC 时间线页面。所有讨论统一在 dart-gsoc 邮件组进行。导师名单含联系方式Jonas Jensenjonasfjgoogle.comDaco Harkesdacoharkesgoogle.comLiam Appelbeliamagoogle.comBrian Quinlanbrianquinlangoogle.comBen Konyibkonyigoogle.comElliott Brookselliottbrooksgoogle.comSamuel Rawlinssrawlinsgoogle.comHelin Shiahhelinxgoogle.comPhil Quitslundpquitslundgoogle.com提案准备要点所有项目默认申请者熟悉 Dart部分涉及 Flutter官方建议先系统学习 Dart 语言并动手写代码。不强制修 first good bug由于代码所有者忙于新特性评审周期可能很长。官方建议申请者为所投项目编写一个可运行的代码样例Sample Project以 secret gist 形式附在申请中不要与其他申请者共享。样例代码不必过度打磨只需证明你能写出与议题相关、能运行且完成非平凡功能的代码即可导师名额有限最终只接受少数申请者。申请通过 summerofcode.withgoogle.com 官网提交鼓励先提交草稿提案并附上允许导师评论的 Google Docs 链接最终提案必须在3 月 31 日截止前提交。议题一在 Dart DevTools 中检查原生内存Inspect native memory in Dart DevTools候选导师Daco Harkes、Ben Konyi难度Hard工作量Large350 小时技能要求Dart、C背景问题在使用 Dart 调试器调试PointerX其中X继承Struct/Union或是原生类型时指针本身是不透明的——调试器中只能看到内存地址无法看到指针指向的内容。本项目的目标就是让调试器能够安全地检查Pointer指向的内存实质上是让.ref成为一个可检查的 getter。以文档中的示例代码为例import dart:ffi; import package:ffi/ffi.dart; final class MyStruct extends Struct { Int32() external int a; Double() external double b; } void main() { final ptr mallocMyStruct(); ptr.ref.a 42; ptr.ref.b 3.14; // 在调试器中检查 ptr 时应当能看到 a 和 b // 无论是通过二进制布局还是更高级的抽象。 malloc.free(ptr); }当前调试器对ptr只显示其内存地址。关键难点与安全约束段错误风险解引用无效指针会导致 segmentation fault。nullptr地址 0容易判断但用户创建的指针可能指向非法内存调试会话中的解引用不应使应用崩溃。这要求 VM 提供一种在调试期安全解引用指针的机制文档给出的方向是在这些特定读操作期间拦截段错误信号signals将其转换为调试器可以展示的虚拟异常或错误消息而不是让进程崩溃。实现路径三个层面UI 集成探索更新 Dart DevTools 与 Debug Adapter Protocol (DAP)为Pointer增加一种新的Instance类型使各 IDE 无需扩展即可正确展示扩展 DevToolsVM Tools选项卡下的Object Inspector。VM Service 协议扩展扩展协议以提供Struct/Union布局与注解的访问能力若尚不存在。VM 运行时实现调试期安全解引用机制如信号拦截转异常。仓库源码印证Pointer定义位于 sdk/lib/ffi/ffi.dartfinal class PointerT extends NativeType implements SizedNativeType它本身就是对底层地址的封装这正是调试器只能看到地址的根因。Struct的语义在 sdk/lib/ffi/struct.dart 中有完整定义abstract base class Struct extends _Compound implements SizedNativeType。其字段必须声明为external子类实例直接指向原生内存Pointer或 Dart 内存TypedData中的位置external 字段的 getter/setter 直接按偏移读写字节——这一设计正是按二进制布局检查内存可行性的源码基础。Struct实例无法通过生成构造函数创建需通过StructPointer.ref、Struct.create、FFI 调用返回值、回调参数、StructArray及访问Struct字段获得想要 Dart 内存支持的视图可用Struct.create原生内存支持则用.ref。VM Service 协议的官方文档位于 runtime/vm/service/service.md协议扩展新增获取布局/注解的 RPC、新增Instance类型都需要据此修订。相关跟踪 issuedart-lang/sdk#48882、dart-lang/native#1034。考核样例Good Sample Project创建一个独立的 Flutter 应用演示Pointer的自定义视图视图接收一个Pointer对象或 mock计算数据结构大小即PointerX中的X并展示内存内容样例阶段可假定指针有效或 mock 数据获取以避免崩溃。加分项Bonus直接在该 Flutter DevTools 代码库中实现自定义视图如在 Object Inspector 中而不是独立应用。突出项Standout为 VM Service 协议新增方法或属性需要构建 Dart SDK并在样例应用中使用这一新协议能力。预期成果在 Dart DevTools 中提供可用的特性含底层 VM 支持让开发者在调试时安全地检查Pointer的内容。议题二为 FFIgen 增加 C 支持C in FFIgen候选导师Liam Appelbe、Brian Quinlan难度Medium工作量Large350 小时技能要求Dart、C技术背景与思路C 没有稳定的 ABI例如随编译器而变化因此无法直接与 Dart 互操作。但可行的路径是解析 C API为其生成 C 兼容绑定借助extern C再生成看起来像 C API 的 Dart 绑定实际调用的是 C 胶水代码Input Output Output C API - C glue code - Dart bindings实施步骤扩展解析逻辑FFIgen 已使用 libclang 解析 C/ObjC API只需扩展以解析 C API扩展 AST使 AST 能够表达 C 语言特性扩展代码生成器支持生成包装 C API 的 C 代码以及与之交互的 Dart 代码。提案要求一份好的提案应逐一探索 C 的各种语言特性描述该特性在 Dart 中最接近的表达方式以及支持该特性的 C 胶水代码长什么样。能翻译的语言特性越多最终产品越好。样例项目为 FFIgen 添加解析逻辑解析某个简单的 C 特性如带方法的类。暂不需要关注代码生成或在 AST 中表示类只需编写解析逻辑并打印类及其方法的相关信息。跟踪 bugdart-lang/native#2644。议题三将 IntelliJ 插件迁移出 weberknecht WebSocket 库Migrate Intellij Plugins off weberknecht web socket library候选导师Phil Quitslund、Helin Shiah难度Medium工作量Medium175 小时技能要求Kotlin背景问题IntelliJ 中 WebSocket 连接的当前实现已过时并且与 Windows PC 上的某些杀毒软件存在冲突。需要将其更新到更现代的库并在各种开发平台上进行测试。跟踪 bugflutter/dart-intellij-third-party#208。议题四使用 LSP 连接 Analysis Server原型化新版 Dart IntelliJ 插件Prototype New Dart IntelliJ plugin using LSP for Analysis Server Connection候选导师Phil Quitslund、Helin Shiah难度Medium工作量Large350 小时技能要求Kotlin技术背景与思路Dart 插件目前通过遗留的自定义协议与 analysis server 通信而迁移到**语言服务器协议Language Server Protocol, LSP**能为 IntelliJ/Android Studio 用户带来更多语言分析特性同时减少 IntelliJ 专属代码。在 Dart SDK 仓库中analysis server 本身位于 pkg/analysis_server其 lib 与 test 目录规模庞大lib 下 800 文件、test 下近千个测试是语言分析能力的核心载体将其能力通过标准 LSP 暴露给 IDE 正是本项目的主旨。关联 issueflutter/dart-intellij-third-party#207。议题五为 Flutter DevTools Network 面板添加 WebSocket/gRPC 支持Add WebSocket/GRPC Support to Flutter DevTools Network panel候选导师Elliott Brooks、Samuel Rawlins难度Hard工作量Medium175 小时或 Large350 小时技能要求Dart、Flutter背景问题Dart 与 Flutter DevTools 的 Network 面板目前只支持 HTTP 请求但许多开发者会在应用与后端服务之间使用其他类型的连接。添加这些支持将显著提升 Network 面板对开发者的价值。实施路径本项目涉及扩展dart:io、dart:developer与VM Service以记录并暴露WebSocket流量细节并更新 DevTools Network 面板进行展示。在 WebSocket 支持完成后有机会添加对 gRPC 流量的同样支持这很可能使项目从Medium变为Large。预期成果WebSocket 流量细节以及潜在的 gRPC 流量细节显示在 DevTools Network 面板中。仓库源码印证现有的网络/WebSocket 剖析基础设施当前仓库中已存在一套可扩展的dart:io网络剖析基础设施位于 sdk/lib/io/network_profiling.dart它通过 service extension 对外暴露 RPCHTTP 相关ext.dart.io.httpEnableTimelineLogging、ext.dart.io.getHttpProfile、ext.dart.io.getHttpProfileRequest、ext.dart.io.clearHttpProfileSocket 相关ext.dart.io.clearSocketProfile、ext.dart.io.getSocketProfile、ext.dart.io.socketProfilingEnabledWebSocket 相关ext.dart.io.getWebSocketProfile、ext.dart.io.getWebSocketConnection、ext.dart.io.clearWebSocketProfile。其中getWebSocketProfile返回WebSocketProfile类型含timestamp与序列化后的连接列表getWebSocketConnection按id返回单个连接的详细信息WebSocketProfiler.getConnection(id)?.toJson(ref: false)。也就是说dart:io层已具备 WebSocket 连接级剖析的雏形本项目要做的是把这些连接细节帧时间、大小、类型等通过dart:developer/VM Service 扩展补全并暴露给 DevTools Network 面板展示。配置文件层面的入口可见 sdk/lib/io/io.dart。考核样例Good Sample Project实现一个ProfileableWebSocket包装器并创建一个使用该包装器展示实时流量日志的 Dart CLI 应用Part 1创建实现dart:io的WebSocket接口的ProfileableWebSocket包装类。通过拦截每次add调用和listen事件记录网络流量记录每个帧的时间、大小和类型存入可查询的本地缓冲区。Part 2创建使用ProfileableWebSocket的 Dart CLI 应用连接公共 WebSocket echo 服务器允许用户发送消息每次发送消息后在控制台打印包装器捕获的最近十条 socket 事件格式化表格。延伸阅读DevTools WebSocket 支持设计与规模评估flutter/devtools#9507、dart:io文档、Dart VM Service 协议runtime/vm/service/service.md、DevTools Network 面板文档。议题六为 package:webcrypto 实现 Android JCA 后端Android JCA backend for package:webcrypto候选导师Hamdaan Ali、Jonas Jensen难度Hard工作量Large350 小时技能要求Dart、Flutter、Android、Java/Kotlin、JNI技术背景与思路package:webcrypto提供Web Cryptography APIs的跨平台实现。在浏览器之外它目前使用内嵌 BoringSSL 的原生实现。本项目目标是创建package:webcrypto的实验分支Android 平台改用package:jnigen调用平台 Java 密码学 API而不再随包捆绑 BoringSSL 二进制。实施路径与预期成果为package:webcrypto创建 Android 专属后端通过package:jnigen对初始子集的原语实现配套测试与文档评估正确性、性能、打包约束与二进制体积权衡一个成功的项目可能证明该方案对未来集成进主包是可行的。考核样例Good Sample Project构建一个 Android 上的小型 Flutter 应用使用package:jnigen从 Dart 调用简单的 Java 密码学 API如计算 digest 或 HMAC通过小型 Dart 包装器暴露操作与 Android 上现有package:webcryptoAPI 的结果做对比记录 Dart、JNI 与 Java 实现之间的数据流。加分项Bonus包含一个针对当前原生后端版本的简单基准测试。六项议题速览对照表议题难度工作量核心技能主攻方向DevTools 原生内存检查HardLarge350hDart、CVM 信号拦截 DAP/VM Service 扩展 Object InspectorFFIgen 支持 CMediumLarge350hDart、Clibclang 解析 AST 扩展 C 胶水代码生成IntelliJ 迁移 weberknechtMediumMedium175hKotlin现代 WebSocket 库替换 多平台测试IntelliJ 插件迁移 LSPMediumLarge350hKotlinAnalysis Server LSP 化减少 IDE 专属代码DevTools Network 支持 WebSocket/gRPCHardMedium175h/ Large350hDart、Flutterdart:io / dart:developer / VM Service 扩展 面板展示webcrypto Android JCA 后端HardLarge350hDart、Flutter、Android、JNIjnigen 调 Java 密码学 API替换 BoringSSL给申请者的实战建议按议题提交对应样例每个议题文档都明确了期望的样例形态Pointer 自定义视图、C 类解析打印、ProfileableWebSocket 包装器等样例是与议题相关的可运行代码比修 bug 更受推荐。把提案写成技术设计文档尤其是议题二提案应系统枚举 C 特性及其 Dart 表达与 C 胶水方案议题六则建议附上数据流说明与基准测试。善用仓库源码做调研FFI 相关议题可从 sdk/lib/ffi/ffi.dart 与 sdk/lib/ffi/struct.dart 入手理解Pointer/Struct的底层布局网络剖析议题可研究 sdk/lib/io/network_profiling.dart 中已有的 WebSocket service extension协议改动需对照 runtime/vm/service/service.md。注意截止日期所有提案须在 2026 年 3 月 31 日前通过官网提交最终版本。赞分享编程语言编译器语言运行时标准库开发工具【免费下载链接】sdkThe Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.项目地址https://gitcode.com/gh_mirrors/sdk1/sdk点击查看免费下载相关推荐WVP视频平台Docker部署指南一条命令拉起GB28181国标监控环境WVP视频平台Docker部署指南一条命令拉起GB28181国标监控环境 wvp GB28181 pro 是一个开箱即用的 GB28181/1078 网络视频后端音视频前端从 GSoC 项目想法到 Dart SDK 实战dart:ffi、pub 工具链与开源贡献路线全解析从 GSoC 项目想法到 Dart SDK 实战dart:ffi、pub 工具链与开源贡献路线全解析 本文基于 Dart SDK 仓库中的 Dart GSoC编程语言编译器语言运行时标准库开发工具推荐开源项目《谷歌BigQuery权威指南》源代码库推荐开源项目《谷歌BigQuery权威指南》源代码库 在大数据领域谷歌的BigQuery以其强大的云数据仓库和分析功能而备受赞誉。本书——《谷歌BigQue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →