1"use strict";(globalThis.webpackChunkzio_site||=[]).push([[1039],{67350(e,s,i){i.r(s),i.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"ecosystem/index","title":"ZIO Ecosystem","description":"ZIO has a rich ecosystem of libraries and tools that enhance its capabilities and provide additional functionality. This ecosystem includes libraries for various purposes, such as web development, data processing, testing, and more.","source":"@site/docs/ecosystem/index.mdx","sourceDirName":"ecosystem","slug":"/ecosystem/","permalink":"/ecosystem/","draft":false,"unlisted":false,"editUrl":"https://github.com/zio/zio/edit/series/2.x/docs/ecosystem/index.mdx","tags":[],"version":"current","frontMatter":{"id":"index","title":"ZIO Ecosystem"},"sidebar":"ecosystem-sidebar","next":{"title":"ZIO Ecosystem Official Libraries","permalink":"/ecosystem/officials/"}}');var n=i(74848),o=i(28453),a=i(75375);const r={id:"index",title:"ZIO Ecosystem"},c=void 0,l={},d=[];function m(e){const s={a:"a",li:"li",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.p,{children:"ZIO has a rich ecosystem of libraries and tools that enhance its capabilities and provide additional functionality. This ecosystem includes libraries for various purposes, such as web development, data processing, testing, and more."}),"\n",(0,n.jsx)(s.p,{children:"But it doesn't end there! If you need a comprehensive list of libraries and tools, you can find them in one of the following sections:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/ecosystem/officials/",children:"Official libraries"}),", maintained by the ZIO team under the ",(0,n.jsx)(s.a,{href:"https://github.com/zio",children:"ZIO Organization"}),"."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/ecosystem/community/",children:"Community libraries"}),", maintained by members of the ZIO community."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Below are some of the highlights from the official libraries:"}),"\n",(0,n.jsx)(a.A,{})]})}function u(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},75375(e,s,i){i.d(s,{A:()=>j});i(96540);var t=i(34164),n=i(28774);const o="wideContainer_Gocx",a="ecosystemCards_slwi",r="ecosystemCardCol_v4y9",c="ecosystemCard_fbJ9",l="ecosystemCardHeader_gdtR",d="ecosystemCardIcon_pN8c",m="ecosystemCardIconImg_SxjK",u="mainProjectCol_XvQu",p="ecosystemCardDescription_MM06",f="ecosystemCardFeatures_AMys",h="ecosystemCardFooter_H4k7",y="ecosystemCardButton_IyzE";var g=i(29027);const x=[{name:"ZIO Blocks",description:"Modular, zero-dependency building blocks for modern Scala applications",features:["Type-safe schemas with automatic codec derivation","Zero lock-in \u2014 no dependency on ZIO or any effect system","Works with any Scala stack: ZIO, Cats Effect, Kyo, Ox, Akka, or plain Scala","Modular \u2014 import only the blocks you need","Full cross-platform support for JVM and Scala.js","Full cross-version support for Scala 2.13 and Scala 3.x","High-performance implementations avoiding boxing and unnecessary allocations","Includes Schema, Chunk, Scope, Docs, TypeId, Context, MediaType, and Ring Buffer blocks"],link:"/zio-blocks",icon:"/img/ecosystem/zio-blocks-mark.svg"},{name:"ZIO HTTP",description:"Type-safe, purely functional HTTP library for high-performance web apps and APIs",features:["High-performance server based on Netty","Type-safe and type-driven endpoints","WebSocket support for real-time applications","Middleware system for cross-cutting concerns"],link:"https://ziohttp.com",icon:"/img/ecosystem/zio-http-logo-mark.png"},{name:"ZIO Streams",description:"Powerful, composable, and type-safe streaming library for working with large or infinite data",features:["Process infinite streams with finite memory resource","Automatic backpressure handling","Rich set of stream combinators","Non-blocking and asynchronous processing"],link:"/reference/stream",icon:"\ud83d\udd17"},{name:"ZIO Test",description:"Feature-rich testing framework with powerful assertions and property-based testing",features:["Property-based testing out of the box","Deterministic testing of concurrent code","Test aspects for reusable configurations","Integration with JUnit and other frameworks"],link:"/reference/test",icon:"\u2705"}
1,{name:"ZIO STM",description:"Software Transactional Memory for safe, composable concurrent programming",features:["Atomic, isolated transactions","Composable concurrent operations","No deadlocks or race conditions","Automatic retry of interrupted transactions"],link:"/reference/stm",icon:"\ud83d\udd12"},{name:"ZIO Schema",description:"Declarative schema definitions for data structures with automatic derivation",features:["Reification of data structures","Manual and automatic schema derivation","Built-in codecs for JSON, Protobuf, Avro, and Thrift","Schema transformations and migrations"],link:"/zio-schema",icon:"\ud83e\uddec"},{name:"ZIO Config",description:"Type-safe, composable configuration management with automatic documentation",features:["Type-safe configuration descriptions","Multiple source support (files, env vars)","Automatic documentation generation","Validation with detailed error reporting"],link:"/zio-config",icon:"\u2699\ufe0f"},{name:"ZIO Logging",description:"High-performance, structured logging with contextual information",features:["Structured logging for ZIO applications","Multiple backend support (SLF4J, JPL, Console)","Context-aware logging with MDC support","Log correlation across async boundaries"],link:"/zio-logging",icon:"\ud83d\udcdd"},{name:"ZIO JSON",description:"Fast, secure JSON library with tight ZIO integration",features:["High-performance parsing and encoding","Hardened against adversarial JSON payloads","Automatic derivation, no shapeless required","Human- and machine-readable error messages"],link:"/zio-json",icon:"\ud83d\udce6"},{name:"ZIO Kafka",description:"A purely functional, streams-based client for Apache Kafka",features:["High-level streaming API on top of the Java Kafka client","Higher throughput than the Java client in most workloads","Parallel per-partition consumption","Custom serialization and deserialization support"],link:"/zio-kafka",icon:"\ud83d\udce8"}];var b=i(74848);function v({icon:e,name:s}){return"string"==typeof e&&e.startsWith("/")?(0,b.jsx)("img",{src:e,alt:`${s} logo`,className:m}):e}function j({eyebrow:e,title:s,subtitle:i,children:m}){const j=x.find(e=>"ZIO Blocks"===e.name),k=x.filter(e=>"ZIO Blocks"!==e.name);return(0,b.jsx)(g.A,{eyebrow:e,title:s,subtitle:i,children:(0,b.jsxs)("div",{className:o,children:[j&&(0,b.jsx)("div",{className:(0,t.A)("row",a),children:(0,b.jsx)("div",{className:(0,t.A)("col col--8 col--offset-2",u),children:(0,b.jsxs)("div",{className:c,children:[(0,b.jsxs)("div",{className:l,children:[(0,b.jsx)("div",{className:d,children:(0,b.jsx)(v,{icon:j.icon,name:j.name})}),(0,b.jsx)("h3",{children:j.name})]}),(0,b.jsx)("p",{className:p,children:j.description}),(0,b.jsx)("ul",{className:f,children:j.features.map((e,s)=>(0,b.jsx)("li",{children:e},s))}),(0,b.jsx)("div",{className:h,children:(0,b.jsx)(n.A,{className:(0,t.A)("button button--outline button--primary",y),to:j.link,children:"Learn More"})})]})})}),(0,b.jsx)("div",{className:(0,t.A)("row",a),children:k.map((e,s)=>(0,b.jsx)("div",{className:(0,t.A)("col col--4",r),children:(0,b.jsxs)("div",{className:c,children:[(0,b.jsxs)("div",{className:l,children:[(0,b.jsx)("div",{className:d,children:(0,b.jsx)(v,{icon:e.icon,name:e.name})}),(0,b.jsx)("h3",{children:e.name})]}),(0,b.jsx)("p",{className:p,children:e.description}),(0,b.jsx)("ul",{className:f,children:e.features.map((e,s)=>(0,b.jsx)("li",{children:e},s))}),(0,b.jsx)("div",{className:h,children:(0,b.jsx)(n.A,{className:(0,t.A)("button button--outline button--primary",y),to:e.link,children:"Learn More"})})]})},s))})]})})}},29027(e,s,i){i.d(s,{A:()=>o});i(96540);const t="subtitle_P0xt";var n=i(74848);function o({eyebrow:e,title:s,subtitle:i,children:o}){return(0,n.jsxs)("section",{className:"py-10",children:[s?(0,n.jsxs)("div",{className:"container mb-10 flex flex-col items-center text-center",children:[e?(0,n.jsx)("span",{className:"eyebrow mb-3",children:e}):null,(0,n.jsx)("h2",{className:"section-title",children:s}),(0,n.jsx)("div",{className:"gradient-rule"})]}):null,i?(0,n.jsx)("div",{className:"col col--12 text--center",children:(0,n.jsx)("p",{className:t,children:i})}):null,o]})}},28453(e,s,i){i.d(s,{R:()=>a,x:()=>r});var t=i(96540);const n={},o=t.createContext(n);function a(e){const s=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.