No Standard IO library in a SessionInit lua script

io lua library seems to be not loaded in a SessionInit script :

ardour {
	["type"]    = "SessionInit",
	name        = "Test Template",
	author      = "An author",
	description = "A description"
}

function factory () return function (...)
	print(io)
end end

with the following result :

2022-04-18T00:21:12 [INFO]: LuaTemplate: nil

On the other hand, it works very well in the scripting window in Ardour.

Does someone have an idea ?

Script interpreters are sandboxed (mainly for realtime safeness [1[). Only the GUI Window and Editor-Actions are whitelisted.

I cannot think of a reason why Session-init scripts cannot be whitelisted either, but so far it isn’t.

[1] by default neither the os and the io library are available, nor is dofile, loadfile, coroutiine, require. In general anything call that may perform file i/o or syscalls or include external files (which may not be present on other systems) is not allowed.

Thanks for your quick response.

It seems raisonable that the Session-Init scripts can use the os and io library because there is no real time constraint.

In my use case, I have to read some track informations from external files to setup my sessions.

I found the lua.sandbox (true) in the meta_session_setup function.

May I propose a Pull Request on GitHub with this change ?

Yes, that’s a great idea!

So my first Pull Request is to change a boolean :grinning:

I use Windows at home so I build a linux version of ardour with WSL to test the change.

It was an informative trip but I am interested in the Windows build procedure so that it is more representative of my use.

You have to start somewhere.

We cross compile Windows binaries on Linux using mingw.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.