All Projects → jet → Falanx

jet / Falanx

Licence: other
Generates F# code from protobuf schema for binary and json format

Programming Languages

fsharp
127 projects

Labels

Projects that are alternatives of or similar to Falanx

Benchmark Grpc Protobuf Vs Http Json
Benchmarks comparing gRPC+Protobuf vs JSON+HTTP in Go
Stars: ✭ 106 (-16.54%)
Mutual labels:  protobuf
Protoc Gen Map
SQL Data mapper framework for grpc/protobuf
Stars: ✭ 112 (-11.81%)
Mutual labels:  protobuf
Pq
a command-line Protobuf parser with Kafka support and JSON output
Stars: ✭ 120 (-5.51%)
Mutual labels:  protobuf
Protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
Stars: ✭ 107 (-15.75%)
Mutual labels:  protobuf
Protoc Gen Go Json
Protobuf compiler plugin to generate Go JSON Marshal/Unmarshal implementations for messages using jsonpb.
Stars: ✭ 110 (-13.39%)
Mutual labels:  protobuf
Twisk
Golang RPC starter kit with Twirp
Stars: ✭ 113 (-11.02%)
Mutual labels:  protobuf
Protoc Gen Struct Transformer
Transformation functions generator for Protocol Buffers.
Stars: ✭ 105 (-17.32%)
Mutual labels:  protobuf
Rust Protobuf
Rust implementation of Google protocol buffers
Stars: ✭ 1,797 (+1314.96%)
Mutual labels:  protobuf
Myth
Reliable messages resolve distributed transactions
Stars: ✭ 1,470 (+1057.48%)
Mutual labels:  protobuf
Pants
The Pantsbuild developer workflow system
Stars: ✭ 1,814 (+1328.35%)
Mutual labels:  protobuf
Twirp
PHP port of Twitch's Twirp RPC framework
Stars: ✭ 108 (-14.96%)
Mutual labels:  protobuf
Schema Registry
Confluent Schema Registry for Kafka
Stars: ✭ 1,647 (+1196.85%)
Mutual labels:  protobuf
Protoc Gen Doc
Documentation generator plugin for Google Protocol Buffers
Stars: ✭ 1,792 (+1311.02%)
Mutual labels:  protobuf
Protobuf
Protocol Buffers - Google's data interchange format
Stars: ✭ 52,305 (+41085.04%)
Mutual labels:  protobuf
Blade Build
Blade is a powerful build system from Tencent, supports many mainstream programming languages, such as C/C++, java, scala, python, protobuf...
Stars: ✭ 1,722 (+1255.91%)
Mutual labels:  protobuf
Gopherlabs
The Ultimate Workshop Track for #golang Developer
Stars: ✭ 106 (-16.54%)
Mutual labels:  protobuf
Streamcryptor
Stream encryption & decryption with libsodium and protobuf
Stars: ✭ 112 (-11.81%)
Mutual labels:  protobuf
Server Side Extension
A Qlik server-side extension protocol for extending the Qlik built-in expression library with functionality from external calculation engines.
Stars: ✭ 125 (-1.57%)
Mutual labels:  protobuf
Luapbintf
Binding Protobuf 3 to Lua 5.3
Stars: ✭ 122 (-3.94%)
Mutual labels:  protobuf
Rules closure
Closure rules for Bazel
Stars: ✭ 119 (-6.3%)
Mutual labels:  protobuf

Build Status NuGet

Falanx code generation

This repository contains the code generator to generate F# source (.fs files) from Protobuf v3 schema.

The general concepts are as follows:

  • Code generation, to generate F# source code, rather than types being injected as a type provider.
  • Idiomatic F# code is generated rather than simple .NET 1.1 era code. This means records, discriminated unions, etc., are generated where appropriate.

How to use

In a .NET Sdk library project, add the following packages

<PackageReference Include="Falanx.Proto.Codec.Binary" Version="0.5.*" />
<PackageReference Include="Falanx.Proto.Codec.Json" Version="0.5.*" />
<PackageReference Include="Falanx.Sdk" Version="0.5.*" PrivateAssets="All" />

It's possibile to use only one of Falanx.Proto.Codec.Binary and Falanx.Proto.Codec.Json or both, the generated code will depends on the packages referenced

Now specify the .proto file path like

  <ItemGroup>
    <ProtoFile Include="..\proto\bundle.proto" />
  </ItemGroup>

and an auto generated file will be created on build

More info in example-sdk/README.md

Template

Install the .NET template for an example library sample

dotnet new -i Falanx.Templates
dotnet new falanx

use --codec argument to specify the codecs (values json,binary,all)

Tool

It's possibile to use falanx as command line .NET global tool

dotnet tool install -g Falanx.Tool
falanx --help

To generate a .fs file for a specified .proto file:

falanx --inputfile test\examples\schemas\bundle.proto --defaultnamespace test --outputfile bundle.fs

More info in example\README.md

How to build Falanx

More info in docs/developer_guide.md

Use the src/Falanx.sln solution for development, or directly the projects with .NET Core Sdk (dotnet).

Projects:

  • src/Falanx.Tool the falanx console app, run with dotnet run
  • test/Falanx.Tests the unit test, run with dotnet run
  • test/Falanx.IntegrationTests the integration tests, run with dotnet run

As shortcuts, from root:

  • dotnet build to build the falanx executable Falanx.Tool.
  • dotnet pack to generate packages in bin/nupks
  • dotnet test -v n to run tests

To build packages

From root

dotnet pack

The nupkgs will be in bin/nupkg

To specify a version pass the Version property like /p:Version=0.1.0-alpha7

Info

Falanx uses:

  • Type Provider SDK common type for quotation and AST support
  • FsAst untyped F# AST to code via the code formatter Fantomas
  • Froto protobuf parser and binary serializer
  • Fantomas code formatter and linter

Security

This repository is actively monitored by Jet Engineers and the Jet Security team. Please monitor this repo for security updates and advisories. For more information and contacts, please see SECURITY

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].