# Python version 3 update?

**URL:** <https://forum.inductiveautomation.com/t/python-version-3-update/10106>\
**Category:** Ignition\
**Created:** [June 8, 2015, 6:37pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106 "2015-06-08T18:37:50Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![liberty810](https://avatars.discourse-cdn.com/v4/letter/l/a6a055/32.png) [@liberty810](https://forum.inductiveautomation.com/u/liberty810)\
**Post date:** [June 8, 2015, 6:37pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/1 "2015-06-08T18:37:50Z")

</div>

There are some really great functions that were added to the Python library since ver 2.5 (currently supported by Ignition). Are there any plans to update Ignition to use a more recent version of Python? Any expected release timeframe? ![:thumb_left:](https://us1.discourse-cdn.com/inductiveautomation/original/1X/e26afb081ddde6df016df6ee49159cf56aaca688.gif ":thumb\_left:")

Thanks!

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [June 8, 2015, 6:42pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/2 "2015-06-08T18:42:19Z")

</div>

Jython 2.7 was just announced. You can voice your support for the upgrade here: [ideas.inductiveautomation.com/fo … jython-2-7](http://ideas.inductiveautomation.com/forums/255378-ignition-features-and-ideas/suggestions/7879431-upgrade-ignition-to-use-jython-2-7), although it’s not really necessary because the upgrade is going to happen either way ![:thumb_left:](https://us1.discourse-cdn.com/inductiveautomation/original/1X/e26afb081ddde6df016df6ee49159cf56aaca688.gif ":thumb\_left:")

Unfortunately the timeline is likely to be Ignition 7.9.

---

<div class="post-metadata">

**Author:** ![nmudge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nmudge/32/3394_2.png) [@nmudge](https://forum.inductiveautomation.com/u/nmudge)\
**Post date:** [June 8, 2015, 10:11pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/3 "2015-06-08T22:11:37Z")

</div>

Great to hear it is going in. Thanks.

---

<div class="post-metadata">

**Author:** ![mdemaris](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mdemaris/32/54639_2.png) [@mdemaris](https://forum.inductiveautomation.com/u/mdemaris)\
**Post date:** [December 6, 2023, 6:57pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/4 "2023-12-06T18:57:40Z")

</div>

any word on upgrading to Python 3.1?

It would be really helpful to use some of the newer features, unless there is a case/switch statement available in 2.7?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 6, 2023, 6:58pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/5 "2023-12-06T18:58:40Z")

</div>

> [@Python 3.x soon?](https://forum.inductiveautomation.com/t/python-3-x-soon/38635/14):
>
> Nothing planned right now. Honestly, this doesn't seem likely in the next couple years, if ever. The backwards incompatibility issues are insurmountable imo. The way I see it, the best case is that we introduce new/parallel scripting engines, with Jython3/Python3 being one possibility. But this idea comes with its own bag of compatibility issues.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [December 6, 2023, 7:09pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/6 "2023-12-06T19:09:31Z")

</div>

Ignition uses Jython, because it needs to run on a jvm. The latest version of python that Jython implements is 2.7.  
Which means that for Ignition to upgrade to python 3, Jython would need to upgrade to python 3. That's entirely out of IA's control.

---

<div class="post-metadata">

**Author:** ![mdemaris](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mdemaris/32/54639_2.png) [@mdemaris](https://forum.inductiveautomation.com/u/mdemaris)\
**Post date:** [December 6, 2023, 7:12pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/7 "2023-12-06T19:12:40Z")

</div>

Isn't Jython an IA scripting engine/language? How is it out of their control?

> [@Python 3.x soon?](https://forum.inductiveautomation.com/t/python-3-x-soon/38635/14):
>
> The backwards incompatibility issues are insurmountable

That's too bad.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [December 6, 2023, 7:13pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/8 "2023-12-06T19:13:20Z")

</div>

> [@mdemaris](#):
>
> Isn't Jython an IA scripting engine/language?

> **[Home](https://www.jython.org/index)**
>
> The Python runtime on the JVM

That's not IA.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [December 6, 2023, 7:44pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/9 "2023-12-06T19:44:12Z")

</div>

I guess I can paraphrase what I said on stage at the dev panel at this year's ICC, for posterity and so I can link to this in the future:

So, the question people usually ask is "When is Python 3 coming to Ignition?". But in practice, there's really two broad reasons people are actually asking that question:

1. They've heard that Python 2.7 is deprecated/old/unmaintained/a security risk/whatever. But that doesn't apply to Ignition, for a few reasons:
  - When folks say "Python" out in the world, they almost always mean **CPython** , the reference implementation of Python. It's true that this project is officially unmaintained, and security risks _are_ more of a worry here - because the backing code is all C, which has direct access to memory and is therefore vulnerable to classes of issues like buffer overflows.
  - **Jython** , however, is neither of those things - it's based on Java, so it's implicitly safe from memory corruption errors, _and_ it's still maintained by a core group of contributors.
  - In addition to those public fixes, Inductive Automation already has and continues to implement our own patches for issues as they are discovered, including patching potentially vulnerable standard library dependencies and fixing bugs reported by our users. This gives us the best of both worlds - we get fixes from Jython "upstream", and can implement our own.

2. They want Python 3, for ecosystem compatibility, or developer experience, or whatever else. But even if Jython 3 _existed_ and was available to us tomorrow, we _still_ couldn't just blindly update the entire Ignition platform to Jython 3.
  - It's still going to be backed by the JVM. So no compatibility with CPython extensions and their implicit reliance on C FFI - meaning no numpy, pandas, TensorFlow, etc.
  - There's a huge library of customer code out there that relies on the exact semantics of Jython/Python 2.7 and its interoperability with Java. As anyone familiar with the Python ecosystem will tell you, the CPython migration from 2 -\> 3 was _not_ a painless process, and this would be just as bad.

All that said, we (Inductive Automation) are **absolutely** aware that we can't just keep coasting on Jython 2.7 forever. Currently, the prevailing internal opinion is that _once a suitable alternative is available_, we'll come up with some parallel scripting engine/runtime, and offer _both_ Jython 2.7 compatibility and whatever new "mode", in parallel, so that upgrades can continue to be seamless but users can take advantage of the new engine.

It's also important to underscore that not all of the obstacles here are purely technical. "Polyglot" engines that can interpret and run multiple guest languages (Javascript, Python 3, Ruby, Kotlin), such as GraalVM exist - but whatever engine we choose is going to be a choice _for the long haul_; we take backwards compatibility very seriously at IA, so whatever we offer has to be something we're comfortable supporting for at least the next decade - and there are certain licensing albatrosses around GraalVM in particular that make it an uncomfortable choice right now.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 6, 2023, 7:44pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/10 "2023-12-06T19:44:45Z")

</div>

IA adds some patches to the official jython 2.7 open source project. Jython is officially under the Python Software Foundation umbrella, last I checked.

---

<div class="post-metadata">

**Author:** ![patrick.szalapski](https://avatars.discourse-cdn.com/v4/letter/p/ea666f/32.png) [@patrick.szalapski](https://forum.inductiveautomation.com/u/patrick.szalapski)\
**Post date:** [May 22, 2025, 1:54pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/11 "2025-05-22T13:54:39Z")

</div>

> [@paul-griffith](#):
>
> All that said, we (Inductive Automation) are **absolutely** aware that we can't just keep coasting on Jython 2.7 forever. Currently, the prevailing internal opinion is that _once a suitable alternative is available_, we'll come up with some parallel scripting engine/runtime, and offer _both_ Jython 2.7 compatibility and whatever new "mode", in parallel, so that upgrades can continue to be seamless but users can take advantage of the new engine.

This seems completely good and wise to me.

Here we are a year and a half later. While you can't commit to an alternative now, it would be helpful if you committed to choosing an alternative by a certain date, to make sure you live up to the "we can't just keep coasting on Jython 2.7 forever" take that I completely agree with.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 22, 2025, 2:14pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/12 "2025-05-22T14:14:51Z")

</div>

There is no alternative that fits into the Ignition environment and exposes java resources to the extent jython does. I don't believe IA will be able to change this as long as Ignition is based on the JVM.

I don't see how IA could possibly commit to a decision deadline before there is even a glimmer of a hope of an acceptable alternative.

(IA doesn't really do deadlines anyways.)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 22, 2025, 3:30pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/13 "2025-05-22T15:30:22Z")

</div>

> [@patrick.szalapski](#):
>
> you committed

I'm just some guy. While scripting is my nominal area of expertise, and I'll certainly be involved in any technical decisions, as mentioned above this is more than a purely technical decision.

`<Disclaimer> `  
This is not an actually informed opinion, just an educated guess:  
I would expect some kind of announcement or at least acknowledgement of the situation at this years [ICC](https://icc.inductiveautomation.com/). Anything that's formally announced at ICC will make it into a blog post of some kind, and that's as close to a 'timeline' as you're going to get.  
`</Disclaimer>`

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 22, 2025, 4:06pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/14 "2025-05-22T16:06:56Z")

</div>

I don't see a compelling alternative scripting engine right now either. Python via GraalVM looks great but I don't want anything to do with Oracle and don't believe for a second that project won't get killed or encumbered with nasty licensing some day.

JetBrains has backed away from encouraging Kotlin as a scripting language.

Other Python-on-JVM implementations aren't as compelling and basically add a big native dependency because they're just executing CPython, which isn't ideal.

Some kind of Lua implementation might be neutralish but then you get no library ecosystem.

A custom scripting language implementation would be a lot of work but at least we'd be responsible for it long term. Again with the library ecosystem though. At best you'd get Java libraries.

---

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [May 22, 2025, 5:10pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/15 "2025-05-22T17:10:55Z")

</div>

> [@Kevin.Herron](#):
>
> but I don't want anything to do with Oracle

i.....uh....am i forgetting who owns the JVM?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [May 22, 2025, 5:28pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/16 "2025-05-22T17:28:08Z")

</div>

The context of the sentence is that Graal is owned by Oracle. Whom, once people are entrenched in using it, will try to monetize it.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 22, 2025, 5:31pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/17 "2025-05-22T17:31:43Z")

</div>

> [@Leor\_Fishman](#):
>
> i.....uh....am i forgetting who owns the JVM?

Yes, you are.

Oracle is largely the steward of the language, and they release Oracle JDK and Open JDK, neither of which we use.

But they don't "own" the JVM. It's all GPLv2.

---

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [May 22, 2025, 6:01pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/18 "2025-05-22T18:01:53Z")

</div>

Yep, so I am

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 22, 2025, 6:07pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/19 "2025-05-22T18:07:23Z")

</div>

I do wish Sun still existed and Java was in their hands, though 🙂

---

<div class="post-metadata">

**Author:** ![kyvski](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kyvski/32/85590_2.png) [@kyvski](https://forum.inductiveautomation.com/u/kyvski)\
**Post date:** [July 10, 2026, 5:54pm UTC](https://forum.inductiveautomation.com/t/python-version-3-update/10106/20 "2026-07-10T17:54:47Z")

</div>

Sorry to necro - but would Liberica NIK be a good alternative? It's a GraalVM core supported by BellSoft, so I assume there would be less licensing concerns.

[Next page](https://forum.inductiveautomation.com/t/python-version-3-update/10106.md?page=2)
