Speakeasy, günlük olarak binlerce OpenAPI spesifikasyonunu işleyen bir platform olarak, mevcut Go kütüphanelerinin sınırlamalarıyla karşılaştı. Bazı kütüphaneler hızlı olsa da spesifikasyonu gevşek bir şekilde modelledikleri için doğru araçlar geliştirmeyi zorlaştırırken, diğerleri spesifikasyona daha yakın olsa da her yerde tiplendirilmemiş map yapıları kullandığından büyük yeniden düzenlemeleri ve statik analizi acı verici hale getiriyordu. Bu durum, Speakeasy'nin üretimde kullandığı SDK'lar, Terraform sağlayıcıları ve dahili araçları için hem doğru bir spesifikasyon modeli sunan hem de büyük ölçekte spesifikasyonları okuma, doğrulama, değiştirme ve dönüştürme yeteneğine sahip yüksek performanslı bir motor ihtiyacını ortaya çıkardı.
Bu ihtiyaç doğrultusunda Speakeasy, github.com/speakeasy-api/openapi adlı kendi kapsamlı kütüphanesini geliştirdi. Bu kütüphane, OpenAPI, Swagger, Arazzo ve Overlay Specification belgeleriyle çalışmak için tasarlanmıştır. Makale, kütüphanenin yüksek performansını ve doğruluğunu sağlayan temel soyutlamalara, performans kararlarına ve tasarım ödünleşimlerine odaklanıyor. OpenAPI'nin dinamik tipler, JSON Schema'nın özyinelemeli ve döngüsel referansları gibi karmaşık yönlerini ele alarak, mevcut kütüphanelerin genellikle modelleme doğruluğunu veya tip güvenliğini feda ettiği zorluklara çözüm sunuyor.
Kütüphanenin temel tasarım kararlarından biri, özel, reflection-tabanlı bir marshaller üzerine inşa edilmesidir. Bu yaklaşım, spesifikasyonun kurallarını ve değişmezlerini doğrudan tip sistemi ve çekirdek mimariye kodlayarak hataların yapısal olarak daha zor ortaya çıkmasını sağlamayı hedefliyor. Speakeasy, bu yeni kütüphanenin Go ekosisteminde OpenAPI araçları geliştirenler için varsayılan bir seçim olmasını amaçlıyor.
Go geliştiricileri için OpenAPI spesifikasyonlarını doğru, tip güvenli ve yüksek performanslı bir şekilde işleyebilen yeni bir açık kaynak kütüphanesi sunulması, API tabanlı sistemlerin geliştirilmesinde önemli bir kolaylık sağlıyor.