Vulcan Vulcan

Overview

Vulcan provides Avro schemas, encoders, and decoders between Scala types and types used by the official Apache Avro library. The aims are reduced boilerplate code and improved type safety, compared to when directly using the Apache Avro library. In particular, the following features are supported.

Documentation is kept up-to-date, currently documenting v1.14.1 on Scala 2.13.

Getting Started

To get started with sbt, simply add the following line to your build.sbt file.

libraryDependencies += "com.github.fd4s" %% "vulcan" % "1.14.1"

Published for Scala 2.12, 2.13 and 3.3. For changes, refer to the release notes.

For Scala 2.12, enable partial unification by adding the following line to build.sbt.

scalacOptions += "-Ypartial-unification"

External Modules

Following is an incomplete list of third-party integrations.

Signatures

Stable release artifacts are signed with the 14CA 4AC4 FDB0 0D5F key.

Compatibility

Backwards binary-compatibility for the library is guaranteed between minor and patch versions.

Version 1.a.b is backwards binary-compatible with 1.c.d for any a > c or a = c and b > d.

Please note binary-compatibility is not guaranteed between milestone releases.

Snapshot Releases

To use the latest snapshot release, add the following lines to your build.sbt file.

resolvers += Resolver.sonatypeCentralSnapshots

libraryDependencies += "com.github.fd4s" %% "vulcan" % "1.14.1-6-aaff6d8-SNAPSHOT"

Dependencies

Refer to the table below for dependencies and version support across modules.

Module Dependencies Scala
vulcan Apache Avro 1.12.2, Cats 2.13.0 Scala 2.12, 2.13 and 3.3
vulcan-enumeratum Enumeratum 1.9.8 Scala 2.12, 2.13 and 3.3
vulcan-generic Magnolia 0.17.0, Shapeless 2.3.13 Scala 2.12, 2.13 and 3.3
vulcan-refined Refined 0.11.4 Scala 2.12, 2.13 and 3.3

Inspiration

Library is heavily inspired by ideas from avro4s.

Participation

Everyone is expected to follow the Typelevel Code of Conduct as described here.

License

Licensed under the Apache License 2.0. Refer to the license file.