Today we are releasing Ariadne 0.9 which moves from GraphQL-core-next to GraphQL-core v3 as its GraphQL implementation.
About GraphQL Core and Core Next
Lets start with little history first. Both GraphQL-core and GraphQL-core-next are Python ports of reference GraphQL implementation,
graphql.js. Key bit of difference between the two is the time at which they were developed, and thus Python features they support.
GraphQL-core has started its life back in 2015 and supports Python 2.7, while work on GraphQL-core-next begun in 2018 and from day one it required Python 3.6 or 3.7 to work. It also supported then-new
asyncio for improved query execution performance and proper dataloader pattern implementation in place of promises. It also had fully-typed codebase which made it much easier for us to reason about its codebase and develop custom abstractions on top of it.
GraphQL-core was most famously used to build Graphene framework, which GraphQL-core-next has found wide use amongst the "new wave" of GraphQL libraries that came about in 2018.
It was always plan for GraphQL-core-next developers to eventually replace GraphQL-core as "default" Python GraphQL implementation and this has finally taken place on 30th November 2019 when GraphQL-core-next has been released as GraphQL-core 3.0.
Ariadne originally used GraphQL core for its implementation, but very quickly we've made decision to move to core-next - something we've never regretted as it enabled us to quickly adopt the new ecosystem of async web frameworks and libraries in our projects.
Upgrading to Ariadne 0.9
Because both GraphQL-core and GraphQL-core-next use the same
graphql package name, it's required for projects using Ariadne to uninstall
Graphql-core-next before upgrading their Ariadne dependency to 0.9.