Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

archain/lua-pb

Repository files navigation

lua-pb

Lua Protocol Buffers.

Supports dynamic loading of Protocol Buffer message definition files .proto

Installing

$ sudo luarocks install "https://raw.github.com/Neopallium/lua-pb/master/lua-pb-scm-0.rockspec"

Design

Frontend .proto definition file parser:

  • pb/proto/scanner.lua -- LPeg lexer for .proto files.
  • pb/proto/util.lua -- some utility functions.
  • pb/proto/grammar.lua -- LPeg grammar for .proto files.
  • pb/proto/parser.lua -- LPeg based .proto -> AST tree parser.

There can be multiple Backend message definition compilers. An optimized backend for LuaJIT is planned.

Standard backend compiler

  • pb/standard.lua -- main compiler code.
  • pb/handlers.lua -- a helper object for managing registered encode/decode formats.
  • pb/standard/message.lua -- defines message interface.
  • pb/standard/repeated.lua -- defines repeated field interface.
  • pb/standard/pack.lua -- binary format encoding (Uses modules luabitops & struct)
  • pb/standard/unpack.lua -- binary format decoding (Uses modules luabitops & struct)
  • pb/standard/buffer.lua -- encoding buffer
  • pb/standard/unknown.lua -- object for hold unknown fields.
  • pb/standard/dump.lua -- message dumping code.

Finished

  • .proto definition parser
  • Message encoding/decoding
  • Dumping messages to text format.
  • Support for packing/unpacking unknown fields.

TODO

  • rename pb/handlers.lua to pb/formats.lua

Missing features:

  • custom options:

    import "google/protobuf/descriptor.proto";

    extend google.protobuf.MessageOptions { optional string my_option = 51234; }

    message MyMessage { option (my_option) = "Hello world!"; }

  • services

Improvements:

  • store unknown fields as raw binary, only fully decode when accessed.
  • LuaJIT optimized backend compiler.

About

Lua Protocol Buffers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 79.4%
  • Protocol Buffer 20.4%
  • Python 0.2%

AltStyle によって変換されたページ (->オリジナル) /