mirror of
https://github.com/gvx/bitser.git
synced 2024-11-11 01:44:21 +00:00
50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
# bitser
|
|
|
|
[![Build Status](https://travis-ci.org/gvx/bitser.svg?branch=master)](https://travis-ci.org/gvx/bitser)
|
|
[![Coverage Status](https://coveralls.io/repos/github/gvx/bitser/badge.svg?branch=master)](https://coveralls.io/github/gvx/bitser?branch=master)
|
|
|
|
Serializes and deserializes Lua values with LuaJIT.
|
|
|
|
local bitser = require 'bitser'
|
|
|
|
bitser.register('someResource', someResource)
|
|
bitser.registerClass(SomeClass)
|
|
|
|
serializedString = bitser.dumps(someValue)
|
|
someValue = bitser.loads(serializedString)
|
|
serializedData = love.filesystem.newFileData("filename")
|
|
someValue = bitser.loadData(serializedData:getPointer(), serializedData:getSize())
|
|
|
|
Pull requests, bug reports and other feedback welcome! :heart:
|
|
|
|
Bitser is released under the ISC license (functionally equivalent to the BSD
|
|
2-Clause and MIT licenses).
|
|
|
|
## Why would I use this?
|
|
|
|
Because it's fast. Because it produces tiny output. Because the name means "snappier"
|
|
or "unfriendlier" in Dutch. Because it's safe to use with untrusted data.
|
|
|
|
Because it's inspired by [binser](https://github.com/bakpakin/binser), which is great.
|
|
|
|
## How do I use the benchmark thingy?
|
|
|
|
Download zero or more of [binser.lua](https://raw.githubusercontent.com/bakpakin/binser/master/binser.lua),
|
|
[ser.lua](https://raw.githubusercontent.com/gvx/Ser/master/ser.lua),
|
|
[smallfolk.lua](https://raw.githubusercontent.com/gvx/Smallfolk/master/smallfolk.lua),
|
|
[serpent.lua](https://raw.githubusercontent.com/pkulchenko/serpent/master/src/serpent.lua) and
|
|
[MessagePack.lua](https://raw.githubusercontent.com/fperrad/lua-MessagePack/master/src/MessagePack.lua), and run:
|
|
|
|
love .
|
|
|
|
You do need [LÖVE](https://love2d.org/) for that.
|
|
|
|
You can add more cases in the folder `cases/` (check out `_new.lua`), and add other
|
|
serializers to the benchmark in `main.lua`. If you do either of those things, please
|
|
send me a pull request!
|
|
|
|
## You can register classes?
|
|
|
|
Yes. At the moment, bitser supports MiddleClass, SECL, hump.class and Slither (and
|
|
probably some other class libraries by accident).
|