-
Notifications
You must be signed in to change notification settings - Fork 201
Language support
This article explains the level of language support in the two versions of the Functions Runtime.
v1 is the official runtime that should be used for all production applications.
The fully supported languages are C#, JavaScript and F#.
There are also a number of languages that are experimental. The following applies for all of those:
- Their purpose is only to get a taste of what using them with Azure Functions might be like in the future.
- There is no official support, so support cases should not be opened when they are used.
- Please do not use them for anything that you rely on! They are only there for experimenting.
Here is more detail about some of them:
The experimental Python support works by launching an instance of python.exe on every function invocation. This works fine when there is a low volume of calls, but it does not scale at all under load.
It also has very poor support for Functions bindings, and does not allow accessing the http request object.
It works the same way as Python, so the same comment applies.
The experimental support uses PowerShell 4.0, which is what is available on the VM today. There is no current plan to upgrade PowerShell, though this could happen in some future.
The v2 runtime Preview was announced here, and adds cross platform support. This is where most of the investments are happening going forward.
It currently supports C#, JavaScript and Java. See this post for details on the Java support.
The whole v2 runtime is currently in Preview, so all the languages it supports should also be treated as Preview.
We have chosen not to bring those forward to v2 in the form that they're currently in. The main reason for this is that we want to take the time to support them correctly.
We definitely have Python on our radar, and once we do it, it will work using the same architecture as JavaScript, and will be completely different from the experimental support that's in v1. We don't have an ETA to share at this time, but it is definitely planned.
As for PHP and PowerShell, we don't yet have clear plans for supporting them in v2, but this could happen at a later time.
Generally, we will not release any language support in v2 if it doesn't have an architecture that allows it to scale and to support advanced triggers. But do note that v1 will continue to be supported going forward, so if you want the experimental support that it has, feel free to continue using v1 (but be aware of all the caveats mentioned above).