Azure Functions runtime versions overview

There are two major versions of the Azure Functions runtime.: 1.x and 2.x. This article explains how to choose which major version to use.

Important

Runtime 1.x is the only version approved for production use.

Runtime Status
1.x Generally Available (GA)
2.x Preview

For information about how to configure a function app or your development environment for a particular version, see How to target Azure Functions runtime versions and Code and test Azure Functions locally.

Cross-platform development

Runtime 1.x supports development and hosting only in the portal or on Windows. Runtime 2.x runs on .NET Core, which means it can run on all platforms supported by .NET Core, including macOS and Linux. This enables cross-platform development and hosting scenarios that aren't possible with 1.x.

Languages

Runtime 2.x uses a new language extensibility model. Initially, JavaScript and Java are taking advantage of this new model. Azure Functions 1.x experimental languages haven't been updated to use the new model, so they are not supported in 2.x. The following table indicates which programming languages are supported in each runtime version.

Language 1.x 2.x
C# GA Preview
JavaScript GA Preview
F# GA
Java Preview
Python Experimental
PHP Experimental
TypeScript Experimental
Batch (.cmd, .bat) Experimental
Bash Experimental
PowerShell Experimental

For information about planned changes to language support, see Azure roadmap.

For more information, see Supported languages.

Bindings

Runtime 2.x uses a new binding extensibility model that offers these advantages:

  • Support for third-party binding extensions.
  • Decoupling of runtime and bindings. This allows binding extensions to be versioned and released independently. You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.
  • A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

All built-in Azure Functions bindings have adopted this model and are no longer included by default, except for the Timer trigger and the HTTP trigger. Those extensions are automatically installed when you create functions through tools like Visual Studio or through the portal.

The following table indicates which bindings are supported in each runtime version.

The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

Type 1.x 2.x Trigger Input Output
Blob Storage
Cosmos DB 1
Event Grid
Event Hubs
External File2
External Table2
HTTP
Microsoft Graph
Excel tables
1
Microsoft Graph
OneDrive files
1
Microsoft Graph
Outlook email
1
Microsoft Graph
Events
1
Microsoft Graph
Auth tokens
1
Mobile Apps 1
Notification Hubs
Queue storage
SendGrid 1
Service Bus 1
Table storage
Timer
Twilio 1
Webhooks

1 Must be registered as a binding extension in 2.x. See Known issues in 2.x.

2 Experimental — not supported and might be abandoned in the future.

Known issues in 2.x

For more information about bindings support and other functional gaps in 2.x, see Runtime 2.0 known issues.

Next steps