SuperAPI AI 工具集

add-compat-flag

编程与开发

查看项目

更新于 10-15 19:50

技能介绍

用途:为 workerd 添加新的兼容性标志,通过兼容性日期逐步推出破坏性行为变更。

主要能力与步骤:

  1. 命名:启用标志用 snake_case 正向描述新行为,如 text_decoder_replace_surrogates;禁用标志用 no_ 或 disable_ 前缀,如 disable_text_decoder_replace_surrogates,仅在标志最终成为默认时需要。
  2. 修改 src/workerd/io/compatibility-date.capnp,在 CompatibilityFlags 结构末尾新增字段,字段序号必须用 next-capnp-ordinal 工具获取,不可猜测;字段名 camelCase 会生成 C++ getter。可用注解包括 $compatEnableFlag、$compatDisableFlag、$compatEnableDate、$compatEnableAllDates、$experimental、$neededByFl、$impliedByAfterDate。$compatEnableDate 设为未来日期,未就绪可省略。注释块必填。
  3. C++ 中使用 FeatureFlags::get(js).getMyNewBehavior() 分支;JSG API 类可在 JSG_RESOURCE_TYPE 中通过 flags.getMyNewBehavior() 访问。
  4. 测试:用 test-name@ 测旧行为,test-name@all-compat-flags 测新行为;.wd-test 中可显式设置 compatibilityFlags,测试不应包含 compatibilityDate。
  5. 文档:在 cloudflare-docs 仓库 src/content/compatibility-flags/ 下新增 markdown,说明作用、默认日期、启用/退出方式与迁移指引,需在启用日期前完成。
  6. 构建验证:just build;just stream-test //src/workerd/api/tests:my-test@;just stream-test //src/workerd/api/tests:my-test@all-compat-flags;just stream-test //src/workerd/io:compatibility-date-test@。

适用场景:workerd 内部行为变更的渐进式发布。限制:字段序号必须顺序且由工具确定,注释与文档为必需项,具体平台与收费信息暂未提供。