![Red Hat repensa a distribuição Linux para a era dos contêineres](https://optimuscloud.com.br/wp-content/uploads/2024/05/1715096645_Red-Hat-repensa-a-distribuicao-Linux-para-a-era-dos-150x150.jpg)
Red Hat repensa a distribuição Linux para a era dos contêineres
7 de maio de 2024![Voto de confiança de US$ 1 milhão da Microsoft no futuro de Rust](https://optimuscloud.com.br/wp-content/uploads/2024/05/1715103843_Voto-de-confianca-de-US-1-milhao-da-Microsoft-no-150x150.jpg)
Voto de confiança de US$ 1 milhão da Microsoft no futuro de Rust
7 de maio de 2024A Microsoft introduziu recentemente o TypeSpec, uma nova linguagem e plataforma de definição de API projetada para atender às necessidades crescentes de desenvolvedores, arquitetos e gerentes de API em um ambiente cada vez mais complexo.
Como o nome indica, TypeSpec está relacionado ao TypeScript, o superconjunto de JavaScript desenvolvido pela Microsoft. Na verdade, o TypeSpec foi inspirado em duas linguagens projetadas pelo guru da linguagem da Microsoft, Anders Hejlsberg – TypeScript e C#. Assim como o TypeScript, o TypeSpec é de código aberto.
“O TypeScript inspirou a maior parte da nossa sintaxe e semântica do sistema de tipos. O TypeScript é realmente ótimo para descrever formas de dados JSON, então seguimos seu exemplo”, disse Brian Terlson, arquiteto principal da Microsoft e arquiteto principal do TypeSpec, ao The New Stack. “Do C#, herdamos a noção de namespaces e como eles se fundem entre arquivos, o que foi uma escolha natural para uma linguagem de descrição de API. No geral, tentamos aproveitar os padrões existentes e bem compreendidos porque queremos que o TypeSpec seja familiar e fácil de aprender para o maior número possível de desenvolvedores.”
TypeSpec pode descrever APIs usando qualquer protocolo ou formato de serialização com sintaxe concisa e familiar e suporte a ferramentas de edição via Visual Studio e VS Code. É descrito como uma “linguagem mínima” que ajuda os desenvolvedores a descrever formas de API de uma forma familiar.
No entanto, “TypeSpec é mais do que apenas uma nova linguagem; é uma plataforma que permite abstração, incentiva a reutilização de código e aproveita ferramentas modernas para desenvolvimento rápido”, escreveu a equipe TypeSpec em uma postagem no blog.
Principais recursos, origem
Além disso, o TypeSpec oferece recursos importantes, como interoperabilidade com linguagens de definição de API padrão do setor, produtividade por meio de experiência superior do desenvolvedor, encapsulamento de padrões de API em componentes reutilizáveis, extensibilidade com decoradores personalizados e modelos de tipos e um ecossistema para distribuição de tipos e extensões comuns.
TypeSpec está em desenvolvimento desde 2019, e tanto ADL quanto Cadl (pronuncia-se “gado”) foram usados como nomes iniciais. O projeto adotou seu nome oficial, TypeSpec, em 2023.
TypeSpec originou-se da experiência da Microsoft no fornecimento de serviços em grande escala no Azure, disse Terlson. Nessa escala, com muitos serviços e muitas equipes, a empresa precisava de uma solução para ajudar os desenvolvedores a criar APIs consistentes e de alta qualidade rapidamente.
Suporte OpenAPI
“Para atingir esses objetivos, o TypeSpec foi projetado para apoiar a codificação de nossas extensas diretrizes de design de API em componentes facilmente reutilizáveis que poderiam ser aplicados em serviços, ao mesmo tempo que integram linting e outras ferramentas de tempo de desenvolvimento para que os desenvolvedores obtenham feedback instantâneo”, disse ele. “O TypeSpec também foi projetado para ser familiar e rápido de aprender, com sintaxe concisa que simplifica drasticamente as especificações da API de autoria e para integração com nosso conjunto de ferramentas existente baseado em OpenAPI.”
“Ele pode encapsular tipos de dados comuns, padrões de API e diretrizes de API em componentes reutilizáveis de alto nível que podem ser compartilhados entre equipes ou ecossistemas. Ele pode compilar para OpenAPI, JSON Schema ou Protobuf compatíveis com os padrões (ou até mesmo todos os três ao mesmo tempo)”, escreveu a equipe TypeSpec.
Em uma demonstração online do TypeSpec do ano passado, Mike Kistler, que na época era gerente de programa principal na equipe da plataforma .NET da Microsoft, e Mark Weitzel, arquiteto principal na divisão de desenvolvedores da Microsoft, demonstraram o design de APIs com a ferramenta.
As APIs estão se tornando cada vez mais importantes, tanto para integrações externas quanto para uso interno nas organizações. No entanto, o gerenciamento de APIs em escala apresenta desafios em termos de consistência, adesão às diretrizes e evolução ao longo do tempo, disse Kistler.
TypeSpec visa enfrentar esses desafios, fornecendo uma linguagem concisa e expressiva para definir APIs, que pode então gerar artefatos como especificações OpenAPI, bibliotecas de clientes e documentação, observou Weitzel.
“Grande parte do nosso conjunto de ferramentas atualmente é construído em torno de API aberta e isso não vai mudar”, disse ele.
Na verdade, o atual conjunto de ferramentas da Microsoft para APIs do Azure é construído em torno do OpenAPI, mas eles encontraram limitações em termos de impor consistência, promover a reutilização e oferecer suporte a vários protocolos além do REST.
A demonstração mostrou como o TypeSpec pode ser usado para definir uma API de “widget” simples, com modelos e operações HTTP. Ele enfatiza a concisão do TypeSpec em comparação com a especificação OpenAPI gerada.
“TypeSpec parece uma grande ferramenta de simplificação e produtividade para desenvolvedores Typescript que se encontram sobrecarregados com o nível de trabalho envolvido para criar e manter manualmente especificações Open API”, disse Eric Newcomer, analista da Intellyx. “Ele oferece variáveis, macros e funções para montar e atualizar dinamicamente as especificações da Open API.”
Além disso, Newcomer observou que “a especificação Open API tornou-se amplamente adotada como a forma padrão de definir uma API, mas pode ser um desafio criar e manter. Alguns fornecedores oferecem ferramentas de design e prototipagem para simplificar o processo, ou UIs de baixo código que oferecem widgets de arrastar e soltar para acelerar as coisas.”
Alimentação para cães
A Microsoft tem “dogfooding” – usando internamente – TypeSpec. O TypeSpec é usado atualmente por dezenas de serviços do Azure, existentes e futuros, e mais estão sendo adotados a cada mês.
“Fora do Azure, fazemos parceria estreita com a equipe do Microsoft Graph, que é usuário frequente do TypeSpec, e outras pessoas em toda a empresa que realizam várias tarefas relacionadas à API.
A equipe TypeSpec se beneficiou muito com as recomendações recebidas de usuários internos.
“As melhorias que foram feitas na alimentação dos cães são numerosas demais para serem listadas. As primeiras versões do TypeSpec parecem um pouco diferentes das atuais graças a todo o feedback que recebemos ao longo dos anos”, disse Terlson. “A equipe aprecia profundamente as sugestões que recebemos e estamos ansiosos para ouvir o mesmo da comunidade mais ampla de desenvolvimento de API”.
Daqui para frente
A Microsoft está trabalhando para desenvolver todos os recursos sobre os quais busca feedback da comunidade antes de a empresa se estabilizar para a versão 1.0 do TypeSpec.
“O mais importante é mover a tecnologia de geração de código do Azure SDK para o projeto TypeSpec”, e prevê que os usuários comecem a gerar clientes e servidores para suas próprias APIs”, disse Terlson.
“Também continuamos a desenvolver a linguagem, por exemplo, adicionando a capacidade de definir valores específicos e usar valores para definir coisas como exemplos de API”, disse ele. Também estamos adicionando novos recursos de biblioteca, como a capacidade de definir APIs de streaming e eventos para oferecer suporte a protocolos como eventos enviados pelo servidor e JSONL de streaming. Nosso GitHub é um ramo de atividades e encorajo todos a virem e assistirem aos acontecimentos e também a participarem.”
A postagem TypeScript encontra o design de API no TypeSpec revolucionário da Microsoft apareceu pela primeira vez em The New Stack.