Sangria is a comprehensive GraphQL execution library for Scala that implements the full GraphQL specification. It provides a type-safe domain-specific language for defining GraphQL schemas (ObjectType, InterfaceType, UnionType, EnumType, InputObjectType, ScalarType, etc.), a parser for GraphQL query and Schema Definition Language (SDL), a validation engine with over 20 built-in validation rules, and an asynchronous execution engine supporting deferred resolution, middleware, query reducers, and subscriptions. The library is modular with separate artifacts for AST representation, parsing, core execution, and macro-based schema derivation, and integrates with cats-effect, fs2, Monix, and various JSON marshalling libraries (spray-json, circe, play-json, etc.). The architecture is based on immutable case classes, visitor patterns for validation and AST traversal, typeclass-based marshalling, and a composable Action ADT for field resolution that supports values, futures, deferred values, and context updates. The codebase demonstrates strong engineering practices with extensive cross-compilation across Scala 2.12, 2.13, and 3.3, binary compatibility management via MiMa, automated CI/CD, and thorough test coverage including yaml-based scenario tests for validation and execution.
Monix is a high-performance Scala/Scala.js library for asynchronous, effectful, and reactive programming, consumed as a dependency rather than run as an application. It provides four core data types: Task (an asynchronous, cancelable effect with a trampolined run loop), Coeval (synchronous lazy evaluation), Observable (a push-based, back-pressure-respecting stream with a very large operator suite), and Iterant (a pull-based functional stream with primitive-specialized batch cursors). Alongside these it ships monix-execution (Scheduler hierarchies with trampolining/batching, a rich Cancelable family, cache-line-padded lock-free atomics, concurrent queues) and monix-catnap (MVar, Semaphore, CircuitBreaker, ConcurrentChannel, ConcurrentQueue, FutureLift). There is no standalone entry point; integration is via sbt libraryDependencies, and the build is a multi-module sbt project cross-compiled for JVM and Scala.js with shared sources plus platform-specific jvm/js implementations.