平的:原则和高效的面向位的二进制序列化。

[bsd3型,数据,图书馆,解析,序列化][建议标签]
版本[RSS(RSS)] 0.2,0.2.2,0.3,0.3.2,0.3.4,0.4,0.4.2,0.4.4,0.5,0.5.2,0.6
更改日志 CHANGELOG公司
依赖关系 阵列(>=0.5.1.0),基础,字节删除(>=0.10.6),容器,deepseq公司(>=1.4),数据列表,文件路径(==1.4.1.1),ghc-prim公司,可散列的(>=1.2.4.0 && <=1.2.7.0 || >=1.4.0.1),HUnit公司(==1.6.0.0),列表-t(>1),记忆(>=0.14.10 && <=0.14.14),单行程的,漂亮的(>=1.1.2),原始的,快速检查(==2.10),半群(<0.19),美味的(==1.1.0.3),文本,无序控制器,矢量[细节]
许可证 BSD-3条款
版权 版权所有:(c)2016-2022 Pasqualino `Titto`Assini
作者 帕斯夸利诺`Titto`Assini
维护人员 tittoassini@gmail.com
类别 数据,正在分析,序列化
主页 http://quid2.org
源回购 头部:git克隆https://github.com/Quid2/flat
已上传 通过PasqualinoAssini公司2022-11-07T15:58:46Z
分配 LTSHaskell公司:0.6,NixOS:0.6,堆叠:0.6
反向依赖关系 5直接,1间接[细节]
下载 总计7511人(过去30天内有117人)
额定值 2.25(票数:2)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2022-11-07[所有1个报告]

平面-0.6自述文件

[返回到包描述]

生成状态

黑客版本

堆叠LTS 16 堆叠LTS 18 堆叠LTS 19 夜间堆叠

Haskell实现扁平,一种原则性的、可移植的和紧凑的二进制数据格式(规格).

如何将其用于娱乐和盈利

{-#LANGUAGE派生泛型,派生任意类#-}
进口公寓
data Direction=北|南|中|东|西派生(Show,Generic,Flat)

使用平的编码:

平[北,南]-> "\149"

不平坦的要解码:

unflat(平面[北,南])::解码[方向]->右[北,南]

由于Flat的位编码,此列表适合1个字节(而不是传统字节编码所需的5个字节):

flatBits[北,南]-> "10010101"

性能

有关一些硬数据,请参阅主要haskell序列化库的比较.

简要地:

  • 尺寸:平的生成的二进制文件明显小于所有其他库(通常是其他库的3/4倍)
  • 序列化时间:商店,坚持平的速度更快
  • 反序列化时间:商店,平的,坚持谷物速度更快
  • 传输时间(序列化时间+网络传输时间+接收端反序列化):平的除了最高的网络速度外,通常速度更快

文档

安装

从获取最新的稳定版本黑客攻击.

兼容性

测试对象:

已知错误和感染

  • 当前不支持包含512个以上构造函数的数据类型(但如果需要,可以轻松添加支持)

  • 编译时间过长

    • 为了提高性能,平的依赖于广泛的内联。不幸的是,这会导致更长的编译时间。

      如果您有许多数据类型或非常大的数据类型,您可能需要:

      • 在开发过程中,关闭优化(堆栈--快速-0号机组在cabal文件中)。

      • 将序列化代码保存在单独的模块中。

  • 另请参见未解决问题的完整列表.

其他语言的端口

生锈类型脚本-JavaScript港口正在开发中。

如果您想帮助移植,请联系平的其他语言。

致谢

平的重用各种软件包中的思想和代码,主要包括:商店,二进制位二元的并包括来自许多贡献者的错误修复。

你可能喜欢的其他东西

解码平的编码数据您需要知道序列化数据的类型。

对于不需要长期存储并且不在开放分布式系统中运行的应用程序,这是可以接受的。

对于那些这样做的人,你可能需要补充平的具有ZM-独立于语言、可复制、绝对类型.