MIP: Merci de ne pas se fier au format des résultats de "Debug.traceback"

Pendant les essais de la première version de notre nouvelle VM Lua, nous avons trouvé quelques jeux qui s’appuyaient sur le format précis retourné par la fonction debug.traceback. Il s’agit d’un message d’intérêt public demandant de modifier le code qui s’appuie sur cela - soyez conscient que nous nous réservons le droit de modifier le format sans prévenir.

Les changements font qu’en nettoyant le format des résultats cela soit plus simple pour Lua, et en partie à cause d’une différence fondamentale sur comment la nouvelle VM marche, et ce qu’elle peut supporter.

Voici un exemple de sortie debug.traceback semi-complexe:

function foo()
    print(debug.traceback())
end

local function bar()
    foo()
end

local Moo = {}
Moo.baz = function()
    bar()
end

function Moo:test()
    self:baz()
end

Moo:test()

Lua 5.1 renvoi ça:

stack traceback:
        test.lua:2: in function 'foo' test.lua:6: in function 'bar' test.lua:11: in function 'baz' test.lua:15: in function 'test' test.lua:18: in main chunk 

Roblox Lua renvoi cela aujourd’hui:

Stack Begin
Script 'Workspace.Script', Line 2 - global foo
Script 'Workspace.Script', Line 6 - upvalue bar
Script 'Workspace.Script', Line 11 - method baz
Script 'Workspace.Script', Line 15 - method test
Script 'Workspace.Script', Line 18
Stack End

Notre VM en développement renvoi cela pour le moment (cela peut encore changer!):

Workspace.Script:2 function foo Workspace.Script:7 function bar Workspace.Script:12 Workspace.Script:16 function test Workspace.Script:18 

… vous avez maintenant une idée. Nous avons vu beaucoup de jeux qui regardent ce que renvoi la fonction debug.traceback, et, pour exemple, pense que cela renverra toujours “Stack Begin”, ou qui aura des méthodes annotées avec “method” au lieu de “function”. Si vous avez un code qui fait cela aujourd’hui, merci de le changer - debug.traceback devrait être utilisé pour des diagnostics de débogage et d’erreurs seulement.

Nous sommes en train de mettre à jour la documentation du DevHub, qui, malheureusement, traitait le format comme un contrat, en notant que le format n’est pas stable.

Sujet original: PSA: Please don't rely on the format of `debug.traceback` results