扩展包
packages 仓库 独立于编译器和标准库。根 xu.xun 统一管理一个模块,mysql、postgres 等目录是它的内部包,不再分别维护模块清单。
声明依赖
本机让 app 与 packages 仓库同级:
module: app
version: !ver 0.1.0
xu: !ver 0.8.8
require:
"github.com/xulang-org/packages": file:../packages
xu install app
xu check app/main.xu --offline使用 SQL 驱动
标准库 database/sql 提供连接池、事务、结果集和驱动契约,mysql/postgres/sqlite 的具体驱动由 packages 提供。下面示例需要已启动且使用 mysql_native_password 认证的 MySQL 服务:
@main
#database/sql
mysql #github.com/xulang-org/packages/mysql
fn main() int {
mut db := sql.open(mysql.driver(), "user:password@tcp(127.0.0.1:3306)/demo?tls=false")
db.ping() or (err) {
println(err.msg())
<< 1
}
db.close() or (err) {
println(err.msg())
<< 1
}
<< 0
}外部路径须明确别名:mysql #github.com/xulang-org/packages/mysql。完整路径是包身份,#mysql 不是官方扩展包的导入方式。
包清单
| 类别 | 包 / API | 服务 |
|---|---|---|
| 数据库 | mysql | MySQL / MariaDB |
| 数据库 | postgres | PostgreSQL |
| 数据库 | sqlite | SQLite |
| 数据库 | clickhouse | ClickHouse |
| 数据库 | mongodb | MongoDB |
| 数据库 | cassandra | Cassandra |
| 数据库 | neo4j | Neo4j |
| 缓存 | redis | Redis |
| 缓存 | memcached | Memcached |
| 消息 | nats | NATS |
| 消息 | mqtt | MQTT |
| 消息 | rabbitmq | RabbitMQ |
| 消息 | kafka | Kafka |
| 协调 | etcd | etcd |
| 协调 | consul | Consul |
| 协调 | zookeeper | ZooKeeper |
| 协调 | nacos | Nacos |
| 检索 | elasticsearch | Elasticsearch / OpenSearch |
| 检索 | meilisearch | Meilisearch |
| 观测 | influxdb | InfluxDB |
| 观测 | prometheus | Prometheus |
| 向量 | milvus | Milvus |
| 向量 | qdrant | Qdrant |
| 向量 | chroma | Chroma |
| 存储 | s3 | S3 / MinIO |
| 协议 | grpc | gRPC / HTTP/2 |
| 协议 | websocket | WebSocket |
| 协议 | dns | DNS |
| 协议 | smtp | SMTP |
当前边界
各包的协议、认证、TLS 和连接池支持范围不同。MySQL 当前拒绝 TLS 和 caching_sha2_password;PostgreSQL 不协商 TLS;gRPC 支持有界明文 unary 调用,高层连接池复用仍待完善。具体范围见各包 API 与源码 README。
SQLite 通过 xu-c-1 使用原生 C 桥接,本机在 packages 仓库根先运行 make native。当前配置 macOS arm64/x64 切片,其他目标需要对应工具链和切片。Git 来源不包含生成的 sqlite.xulib;远程 SQLite 需要包含原生资源的模块归档,该发行流程尚待发布。