On Tue, 25 Jun 2013 19:57:45 +0900 Carsten Haitzler (The Rasterman)
<ras...@rasterman.com> wrote:

> On Tue, 25 Jun 2013 19:40:03 +1000 David Seikel <onef...@gmail.com>
> said:
> 
> > On Tue, 25 Jun 2013 17:02:43 +0900 Carsten Haitzler (The Rasterman)
> > <ras...@rasterman.com> wrote:
> > 
> > > On Tue, 25 Jun 2013 11:36:10 +1000 David Seikel
> > > <onef...@gmail.com> said:
> > > 
> > > > On Tue, 25 Jun 2013 10:06:10 +0900 Cedric BAIL
> > > > <cedric.b...@free.fr> wrote:
> > > > 
> > > > > Right now only a thought exercice, but you can get info
> > > > > there : https://phab.enlightenment.org/w/bob/ .
> > > > 
> > > > Definitely something my LuaJIT experiments will be good for.
> > > > 
> > > > "A daemon could be in charge of generating the JIT and thus
> > > > sharing information across processes (Does LuaJIT allow for
> > > > this?)."
> > > 
> > > this is way too premature in terms of optimizing imho. sure -
> > > having N apps all go run their own jit on the same bit of lua is
> > > inefficient. having it jitted once and shared is much better. but
> > > how do we share jitted code sensibly so it can be executed in N
> > > places safely? we would need to share jitted code inside mmaped
> > > shared memory segs mmaped to the same absolute addresses, unless
> > > we modified the jit engine to use base address relative code
> > > generation... ugh!. or we run it all in the server and ipc
> > > results/input to and fro? ... hmm ewww...
> > > 
> > > > If that means that some EFL based C code is generating and
> > > > compiling Lua code, in response to commands from a socket, then
> > > > yes.  If that also includes running the results in a threaded
> > > > way with message passing, then also yes (same daemon).  I have
> > > > these working already.  Designed to deal with thousands of Lua
> > > > scripts running at once, and using LuaJIT. I've mentioned this
> > > > before.
> > > 
> > > right now thoughts are along the lines of every object type
> > > (widget? or part in edje) is really a bunch of lua to implement
> > > it - or to calculate it and hand off to a "go implement this
> > > state for me" code...
> > > 
> > > what i'd like to see is for it to be easily parallelisable into
> > > threads. so we can calculate lots of params/parts in parallel when
> > > possible (independent calc paths - eg of 2 child branches before
> > > parent has to look at results of children) etc. thus why calc vs
> > > implement should be stages.. maybe lua tables with functions
> > > (methods) to implement calc , implement, etc. etc. - don't know.
> > > thought exercise atm.
> > 
> > My point is that this sort of thing is not just a thought exercise
> > for me, I've done a lot of the work already for another project.  I
> > was always keeping Edje Lua in mind when I did it though, thinking
> > some of the work could apply there.  Naturally I used EFL for this
> > project. B-)
> > 
> > It's a virtual world scripting engine.  Second Life / OpenSim
> > virtual worlds are made of 256 x 256 meter sims, with hundreds or
> > thousands of these sims in any given world.  Each sim might have
> > several thousand LSL scripts running, and in a lot of cases most of
> > those scripts are just multiple copies of the same dozen scripts.
> > So I've been writing a daemon that generates Lua scripts
> > (translated from pre existing LSL scripts), then compiles and runs
> > them with LuaJIT, using a threaded worker queue with message
> > passing system.  Getting it to run fast and use minimal resources
> > is important for this project.  I don't want thousands of these
> > same dozen scripts soaking up memory, I want one of each.
> > 
> > This daemon will also run in the virtual world viewer, driving Edje
> > UIs via Edje Lua.
> 
> oh.. and we need to figure out how to sensibly "override" objects.
> basically i can smell objects being very oo-like in that they
> implement methods. unlike native we can not just totally override a
> specific method on an object class (we want to only keep 1 instance
> of a class for an object and not generate per actual object created
> for efficiency) but we can "PATCH" a method. i assume we'd use a
> metatable with functions stuffed into it to represent a class, for
> the basics (please expound on this as u see fit and as to what u
> think is good/bad!)... but we can ALSO do things like provide "slots"
> or "hook points" within a function. let me do a very simple one
> (please don't nitpick my poor lua :)):
> 
> myclass = {}
> 
> function myclass:new()
>   o = { left = 0; right = 0; size = 0}
> -- slot:init-vals
>   self.__index = self
>   return setmetatable(o, self)
> end
> 
> function myclass:layout(obj)
> -- slot:pre-calc
>   self.size = self.left + self.right
> -- slot:post-calc
> end
> 
> ----------------
> 
> now let's say i'm a hacky arty ui person. i want to take the basic
> object type "myclass" but simply add a third element to it -
> otherwise keep the rest the same. i really want to "patch" the code
> by inserting some code of my own in available slots like:
> 
> slot:init-vals = "o.extra = 0"
> slot:post-calc = "size.self += self.extra"
> 
> so after "patching" the code becomes:
> 
> myclass = {}
> 
> function myclass:new()
>   o = { left = 0; right = 0; size = 0}
>   o.extra = 0;
> -- slot:init-vals
>   self.__index = self
>   return setmetatable(o, self)
> end
> 
> function myclass:layout(obj)
> -- slot:pre-calc
>   self.size = self.left + self.right
>   self.size += self.extra
> -- slot:post-calc
> end
> 
> think of this as a very quick and easy way of inheriting a class and
> then making just a few layout adjustments. that is just an idea i
> have. use slots to insert code into. we could have replace blocks too
> like:
> 
> -- repbegin:name
> ...
> -- repend:name
> 
> and so i can "replace" the logic of some named section of code with
> my own.
> 
> basically this won't be done in code btw.. i expect this would be
> done in the bob editor/gui when someone wants to take an existing
> object/collection/logic and just make some minor changes. they can
> SAVE their changed class to their library of objects they get to use
> and its always stores just as a delta (patchset of slot inserts or
> replaces etc.) over its parent/source class. this is something we can
> do in lua but not in c at runtime. this of course depends on the
> internal vars that a slot insert or replace section replace being
> constance/known. i would imagine that your bob files would ship the
> lua with them... including parent classes you inherit from. only
> "well defined and never to change in an incompatible way" classes
> will ship with the bob install itself (saves space in bob files
> shipping them).
> 
> but up for debate.

I'm not quite seeing the entire picture here, but I'm late to this
party.  Let me see if I have this straight.

For EFL 2.0 Edje you want to replace .edc + Embryo with some sort of
hybrid Lua.  Also using Lua to replace some of the C bits of Edje.
Using LuaJIT and automated parallelisation of the bits of Lua.  With
all the widgets and widget parts being entirely implemented in Lua.
All the Lua is a bunch of snippets, with the structural snippets being
part of the system, and insertable / overridable snippets being
provided by the user.  On top of this will be some sort of graphical
GUI builder / snippet manager that lets you drill down to the
underlaying Lua code.

Correct me if I'm wrong.

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to