Protocol buffer compiler for the proto-lens library.

Version on this page:
LTS Haskell 17.15:
Stackage Nightly 2021-06-01:
Latest on Hackage:

See all snapshots proto-lens-protoc appears in

BSD-3-Clause licensed by Judah Jacobson
This version can be pinned in stack with:proto-lens-protoc-,1974

Module documentation for

Turn protocol buffer files (.proto) into Haskell files (.hs) which can be used with the proto-lens package. The library component of this package contains compiler code (namely Data.ProtoLens.Compiler.*) is not guaranteed to have stable APIs.'


Changelog for proto-lens-protoc


  • Support haskell-src-exts-1.22.*, and remove support for haskell-src-exts-1.17.*.


  • Bump the dependency on base and containers to support ghc-8.6.1.
  • Fix a GHC error on enums with a very large number of cases (#241).


  • Split out proto-lens-setup and proto-lens-runtime into separate packages.
  • Hide the constructors and record fields of message types, and make Show instances call showMessageShort.
  • Generate explicit NFData instances for each type.
  • Track the change to proto-lens: Don’t use data-default for default proto values (#194).
  • Use simplified lens-labels instances. (#208)


  • Bump the upper bound to temporary-1.3.
  • Fix warnings.


  • Fix management of generated files between Cabal components (#171).
  • Bump the lower bound on base to indicate we require ghc>=8.0.
  • Use autogen-modules. (#196)


  • Bump the dependency on base for ghc-8.4.2.
  • Bump the dependency to Cabal-2.2.*.
  • Make Symbol an instance of Semigroup.


  • Remove support for ghc-7.10. (#136)
  • Use a .cabal file that’s auto-generated from hpack. (#138)
  • Separate types into their own module, apart from field lenses.
  • Improve readability of HasLens instances. (#118)
  • Add support for tracking unknown fields. (#129)
  • Don’t generate Haskell modules if they won’t be used. (#126)
  • Bundle enum pattern synonyms exports with their type. (#136)
  • Split the Message class into separate methods. (#139)
  • Refactor the FieldDescriptorType. (#147)
  • Add a case to proto3 enums for unknown values. (#137)
  • Track consolidation of proto-lens-descriptors into proto-lens. (#140)
  • Generate service definitions using promoted datatypes. (#154)
  • Generate prisms for oneof message fields. (#160)


  • Don’t camel-case message names. This reverts behavior which was added in v0.2.2.0.


  • Bump the dependency for process-1.6.


  • Fix the case where types/constructors of oneofs overlap with those of submessages or subenums, by appending "'" to the former when required.


  • Bump the dependency on base to support ghc-8.2.1 and Cabal-2.0.
  • Bump the dependency for haskell-src-exts-0.19.
  • Improve the semantics of oneof fields, and add a lens to access the underlying sum type.
  • Generate Ord instances for all exported datatypes.
  • Print a better error message when missing protoc or proto-lens-protoc.
  • Expose message names to support Data.ProtoLens.Any.
  • CamelCase the names of Haskell message types.

v0.2.1.0 and older

See for proto-lens.