Supported languages in Azure Functions

This article explains the levels of support offered for languages that you can use with Azure Functions.

Levels of support

There are three levels of support:

  • Generally available (GA) - Fully supported and approved for production use.
  • Preview - Not yet supported but is expected to reach GA status in the future.
  • Experimental - Not supported and might be abandoned in the future; no guarantee of eventual preview or GA status.

Languages in runtime 1.x and 2.x

Two versions of the Azure Functions runtime are available. The 1.x runtime is GA. It's the only runtime that is approved for production applications. The 2.x runtime is currently in preview, so the languages it supports are in preview. The following table shows which 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.

Experimental languages

The experimental languages in 1.x don't scale well and don't support all bindings. For example, Python is slow because the Functions runtime runs python.exe with each function invocation. And while Python supports HTTP bindings, it can't access the request object.

Experimental support for PowerShell is limited to version 4.0 because that is what's installed on the VMs that Function apps run on. If you want to run PowerShell scripts, consider Azure Automation.

The 2.x runtime doesn't support experimental languages. In 2.x, we will add support for a language only when it scales well and supports advanced triggers.

If you want to use one of the languages that are only available in 1.x, stay on the 1.x runtime. But don't use experimental languages for anything that you rely on, as there is no official support for them. You can request help by creating GitHub issues, but support cases should not be opened for problems with experimental languages.

Language extensibility

The 2.x runtime is designed to offer language extensibility. Among the first languages to be based on this extensibility model is Java, which is in preview in 2.x.

Next steps

To learn more about how to use one of the GA or preview languages in Azure Functions, see the following resources: