EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Why we want Lua on the IOC
From: Mark Rivers <[email protected]>
To: "'Ben Franksen'" <[email protected]>, "[email protected]" <[email protected]>
Date: Thu, 23 Feb 2017 22:08:05 +0000
Hi Ben,

Have you seen Jeff Hill's talks on this?

2015 EPICS collaboration meeting at Michigan State.
https://indico.fnal.gov/getFile.py/access?contribId=41&sessionId=2&resId=0&materialId=slides&confId=9718

2016 EPICS collaboration meeting at Oak Ridge.
https://conference.sns.gov/event/11/session/1/contribution/63/attachments/117/318/Applications_of_Lua_Scripting_at_LANSCE.pdf

Mark



-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Ben Franksen
Sent: Thursday, February 23, 2017 4:00 PM
To: [email protected]
Subject: Why we want Lua on the IOC

Some people (Ralph?) mentioned that embedding Lua on EPICS IOCs might be
a good idea, perhaps even as a replacement for the iocsh. Prompted by
this I have been reading up on Lua, which, until now, I had dismissed as
yet another boring dynamically typed imperative/OO language (yawn). I
was wrong.

Yes, the language is procedural, imperative, with some OO features,
nothing spectacular. But it does have a number of features that make it
particularly suitable for EPICS. First of all, it has been designed from
the ground up for embedding in a host program. It is very small and
light-weight, so could easily run on 'real' IOCs, even on small devices.
Its language features have been carefully selected to offer only what
can be easily interacted with from a host program written in C. The
language itself is extremely simple, very much suitable for users who
are not professional programmers (constrast that with Unix shell
programming). The syntax is not whitespace (layout) sensitive, allowing
to write and execute simple programs on a terminal without any advanced
line-editing features; yet semicolons between statements are optional
(like in Eiffel, if anyone rembers that one). It has first class and
anonymous functions but provides syntactic sugar for the conventional
style of (named) function definitions. Registering C functions for Lua
(from the host program) is a straight forward exercise, requiring less
boilerplate than for the iocsh. Lua supports one and only one structured
data type, the table, which is enough for programming inside Lua. The
host program can add abstract data types and can even overload operators
or table key selection for them, giving users an OO-like API due to
support for first class functions.

Given appropriate support from the host (EPICS base) it could be used to
write simple "EPICS scripts" to be executed directly by the (Lua) shell,
for instance to access and manipulate the database (static and dynamic);
or one could conditionally configure a driver with different parameters,
depending on a configuration option; or start sequencer programs in a
loop. I would even consider adding a sequencer-like extension.

The only downside I can see at the moment (others will surely provide
more) is that strings must be quoted, which is a bit inconventient for
an interactive shell. (At least, as in Perl and in contrast to Python,
you can use identifiers (barewords in Perl speak) as table keys.)

Cheers
Ben

________________________________

Helmholtz-Zentrum Berlin für Materialien und Energie GmbH

Mitglied der Hermann von Helmholtz-Gemeinschaft Deutscher Forschungszentren e.V.

Aufsichtsrat: Vorsitzender Dr. Karl Eugen Huthmacher, stv. Vorsitzende Dr. Jutta Koch-Unterseher
Geschäftsführung: Prof. Dr. Anke Rita Kaysser-Pyzalla, Thomas Frederking

Sitz Berlin, AG Charlottenburg, 89 HRB 5583

Postadresse:
Hahn-Meitner-Platz 1
D-14109 Berlin

http://www.helmholtz-berlin.de



Replies:
RE: Why we want Lua on the IOC Hill, Jeff
References:
Why we want Lua on the IOC Ben Franksen

Navigate by Date:
Prev: Why we want Lua on the IOC Ben Franksen
Next: RE: Why we want Lua on the IOC Hill, Jeff
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Why we want Lua on the IOC Ben Franksen
Next: RE: Why we want Lua on the IOC Hill, Jeff
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
ANJ, 21 Dec 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·