Dart 3.6 发布,workspace 和 Digit separators

server/2024/12/15 14:29:32/

workspace

之前我们就聊过 Flutter 正在切换成 Monorepo 和支持 workspaces ,Dart 3.6 开始,Pub 现在正式支持 monorepo 或 workspace 中 package 之间的共享解析。

pub workspaces 功能可确保 monorepo 中的 package 共享一组一致的依赖项,这样在分组包之间出现依赖关系冲突时可以更轻松解决它们。

monorepo(mono repository) ,它是一种项目代码的管理方式,就是将多个项目存储在一个 repo 中,在 monorepo 里多个项目的所有代码都存储在单个仓库里,这个集中式存储库包含 repo 中的所有组件、库和内部依赖项等。

另外,Flutter analyzer 可以在单个 analysis 上下文中处理 pub 工作区中的所有 package,而不是之前为每个 package 使用单独的 context 的行为。

对于大型仓库,特别由于 monorepo 结构化的原因,Analyzer 在工作的时候最终会为每个包及其所有依赖项加载了多个重复的 analysis contexts,从而导致 monorepo 里每个包 analysis 时在内存中生成了多个副本,最终出现内存占用过大问题,而 workspace 这可以显著减少 Dart 语言服务器消耗的内存量,从而提高 IDE 性能。

要定义 pub 工作区,需要在根 pubspec.yaml 文件中添加 workspace 字段,并列出相关的 package:

name: _
publish_to: none
environment:sdk: ^3.6.0
workspace:- packages/helper- packages/client_package- packages/server_package

然后运行 pub get 在仓库中的任意位置完成映射和剩余文件管理,要使用 pub 工作区,所有工作区包(但不是依赖项)必须具有 ^3.6.0 或更高版本的 SDK 版本约束:

environment:sdk: ^3.6.0
resolution: workspace

如果任何工作区包相互依赖,则无论源如何,它们都将自动解析为工作区中的包。

另外,还可以通过在工作区 pubspec.yaml 文件旁边放置一个 pubspec_overrides.yaml 文件来做依赖项覆盖。

更多可见:https://blog.csdn.net/ZuoYueLiang/article/details/143518958?spm=1001.2014.3001.5501 / https://dart.dev/tools/pub/workspaces

Pub 下载计数

现在 pub.dev 上有更精确指标的要求: downloads,下载计数将替换单个软件包页面上之前的 “popularity score”,除了新指标外,用户还会在每个页面上找到一个迷你图,显示一段时间内的每周下载量:

Digit separators

Dart 3.6 现在允许使用下划线 (_) 作为数字分隔符,这有助于使长数字字面量更具可读性,例如多个连续的下划线表示更高级别的分组:

1__000_000__000_000__000_000
0x4000_0000_0000_0000
0.000_000_000_01
0x00_14_22_01_23_45

PS ,类似的功能在 Dart 3.7 也会有,(_) 在 Dart 3.7 的局部变量和参数是非绑定的,因此可以在同一个范围中声明它们任意多次,而不会发生冲突:

参考链接:https://medium.com/dartlang/announcing-dart-3-6-778dd7a80983


http://www.ppmy.cn/server/150364.html

相关文章

【arm】程序跑飞,SWD端口不可用修复(N32G435CBL7)

项目场景: 国民N32G43X系列,烧录了一个测试程序,在DEBUG中不知什么原因挂掉,然后就无法连接SWD或JLINK。 问题描述 在SWD配置中不可见芯片型号,无法connect,无法烧录。但基本判断是芯片没有损坏。怀疑是程…

学习日志023---初始opencv

一、二值化 功能 二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图 1.1、阈值法(THRESH_BINARY) 通过设置一个阈值,将灰度图中的每一个像素值与该阈值进行比较,小于等于阈值的像素就被设置为0&#xff08…

我的 AI 辅助编程工具搭配心得

近年来,AI 在编程领域的应用越来越广泛,而我也逐渐摸索出一套高效的 AI 辅助编程工具搭配方法。从复杂算法到前端开发,再到代码反编译,这些 AI 工具不仅提升了我的开发效率,也让我在解决问题时多了一些“得力助手”。今…

【数字信号处理】期末综合实验,离散时间信号与系统的时域分析,离散信号 Z 变换,IIR 滤波器的设计与信号滤波,用窗函数法设计 FIR 数字滤波器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

大数据 机器学习毕业设计选题分享

文章目录 🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取? 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢? 🚩2 选题概览🚩 3 项目概览题目1 : 大数据电商…

网络安全—PKI公钥基础设施

前提知识 散列函数 散列也可以叫哈希函数,MD5、SHA-1、SHA-2、、(不管叫啥,都记得是同一个东西就行) 散列的特点: 固定大小 不管你进行散列的文件大小有多大,最后输出的都是一个固定长度的散列值雪崩效应…

租赁系统|租赁小程序|租赁小程序成品

租赁系统是现代企业管理中不可缺少的数字化工具,它通过高效的信息整合与流程管理,为企业带来极大的便利和效益。一个完善的租赁系统开发应具备以下必备功能: 一、用户管理 用户管理模块负责系统的访问控制,包括用户注册、登录验证…

2024年第十五届蓝桥杯青少组C++国赛—割点

割点 题目描述 一张棋盘由n行 m 列的网格矩阵组成,每个网格中最多放一颗棋子。当前棋盘上已有若干棋子。所有水平方向或竖直方向上相邻的棋子属于同一连通块。 现给定棋盘上所有棋子的位置,如果要使棋盘上出现两个及以上的棋子连通块,请问…