TEAL Turing complete or non-turing complete

Hello,

I just ran into a contradiction on the official Algorand websites.
So on The Smart Contract Language - Algorand Developer Portal it says “The language is a Turing-complete language” and here PyTeal: Algorand Smart Contracts in Python — PyTeal documentation it says “This a non-Turing complete language”.

My question is which one is true?

Thank you in advance!

The PyTeal docs are being updated. We just added looping and subroutines to the AVM: Introducing Algorand Virtual Machine: AVM 0.9 Release | Algorand Developer Portal Do keep in mind though the AVM runtime restricts run time of contracts based on opcode costs.

Hi! Apologies I’m a bit late to this party!

Until a few minutes ago I was labour under the misapprehension that TEAL was Turing incomplete.

I’m a retired computer scientist, so a little behind the times, but my understanding has always been that a Turing incomplete language is better for smart contracts as it offers fewer attack vectors. This was one of the strengths of TEAL vs Solidity.

Obviously being Turing incomplete also makes coding somewhat trickier, and the language more assembly like.

Does this change mean that Algorand has solved the problems with using a Turing complete language for smart contracts? If so then surely this is huge news!

I’d really like to learn more if anyone can spare the time to type a little synopsis for me.