On Monday 31 December 2012  10:20, Cedric BAIL wrote :
> On Sun, Dec 30, 2012 at 10:48 PM, Gustavo Sverzut Barbieri
> <barbi...@profusion.mobi> wrote:
> > On Sun, Dec 30, 2012 at 10:04 AM, Cedric BAIL <cedric.b...@free.fr> wrote:
> >> On Sun, Dec 30, 2012 at 12:55 PM, Lucas De Marchi
> >> <lucas.demar...@profusion.mobi> wrote:
> >> > I don't want to be the boring guy complaining on this. But I can't
> >> > agree neither on the reasons why this went in, nor how it went in. For
> >> > me eo is just raping C and all the problems pointed out should be
> >> > fixed elsewhere.
> >>
> >> Please describe how. For example how do you plan to link cleanly any
> >> object from ecore or eio for example with any evas_object ? How do you
> >> plan to give memory compaction ? How do you see we could do the ID
> >> indirection ? How can we do a live debug of live object in a program ?
> >> How do you provide multiple inheritance ? How do you provide API and
> >> ABI stability over time ? How do you make bindings easier to keep in
> >> sync possible ? Please share your idea. If you dislike Eo so much, you
> >> must have an alternative in mind that solve the same issue that Eo
> >> solve. At the moment, I only see rants and no care about the problem
> >> that Eo address and the answer we have been giving here.
> >
> > I was trying to stay out of this thread, everybody knows I hate Eo and was
> > against this since the beginning, showing facts on problems it caused to
> > debug.
> >
> > But with these arguments, you're being too naive an eo is the solution for
> > everything is not working.
> >
> > the memory compaction, for example, is independent and either you found out
> > the "light" that nobody else did, or you'll face huge problems if you try.
> > Not everywhere uses eo_data_get(), then if you replace the memory with some
> > other address underneath, you'll end with lost pointers, garbage and it
> > will be super-hard to find. The change will not be doable in the code base
> > of our size. If may have worked if we started coding like that from day0.
> 
> Indeed the eo_data_get doesn't allow that. I have been working on a
> proposal to solve that problem and open some more possibility. I
> planned to write a mail later this week. Anyway the idea is to move to
> an api like a rw mutex. So that as long as you hold a pointer to it,
> it wont get compacted. Main target are currently Evas and Edje where
> it would help and the code affected is not that big (basically mostly
> in canvas/ subdirectory).
> 
> > ID indirection helps what? making debug harder?
> 
> You get an assert as soon as you use or reuse a wrong pointer. Instant
> backtrace that point to the source of the problem. Zero delay. No
> hiding. It will help application developers that tend to still
> manipulate dead object.
> 
> > ABI/API stability is worse, not better. You still have the same problems
> > you had before, but the existing tools to check that (nm + shell scripts to
> > compare 2 libs) won't work... and the worse part is simple: before you
> > could reorder the functions around, now you must keep them in order as they
> > imply an ID and it can't change. Okay, this is very minimum, but it is
> > worse, not better in that regard.
> 
> nm + shell is a very limited tool to check for API/ABI stability. It
> completely ignore structure and enum. So it's worse but anyway relying
> on nm + shell for doing an automated test here, is really a wrong
> argument. If you want this kind of tool, you will need to move to a
> llvm/clang's plugin anyway and that kind of plugin would be able to
> check API/ABI stability for EO.
> 
> > See, you can't still change the parameters. You can't change the return
> > type. You can't change the function name.
> 
> This is not C++, you can change the parameters and return value as
> long as they remain opaque. As for changing the public name of a
> function, I don't see how you could still provide an API/ABI
> compatibility with such a feature. But as we are doing C, API/ABI
> stability is almost an non issue here compared to other language
> (which was my main point on that subject).
> 
> > Bindings: I'm still to see that for real, but IMO it will make bindings
> > worse. Also, people tend to think of bindings as a simply expose C
> > functions in that language 1:1. This is horrible, you're developing for
> > some language and you must cope with that language's style as much as
> > possible. If the work to make the Python or JS bindings were just to
> > generate 1:1, it would be better, but we took the time to think how to
> > match language nicely.
> 
> This is debatable. I do think that a 1:1 binding is fine as it provide
> an easy and sure path with time. Still there is clearly a need to
> implement a layer in the "binded" language to abstract it and make it
> feel like a native JS, Python, whatever API. You may not have a 1:1
> binding in Elev8, but I think you are doing a higher up layer in JS
> with EasyUI that could have been an abstraction between a 1:1 binding
> and the JS world. I also think that this way the binding would have a
> much easier time to provide a stable API and the script could just
> include the EasyUI layer they used for development. That one would
> have worked on every version of the binding without any breakage ever
> and it would have make the life of maintaining that binding much more
> easy.
> 

Ruby binding is a 1:1 + a ruby object layer (elementary,evas,ecore done).
As ruby is more a language spec than an implementation, the advantage of this
approche is that you are not thight to the internals of a specific
implementation. There is a third party lib (ffi bound to libffi) which provides
the mechanisms, so if the language implemetation supports it, your binding 
works.

> > For bindings, the worse part here is that you'll never be able to construct
> > va_list then you'll never be abe to expose eo_do() itself.
> 
> It's not worse, it just limiting and sad. You will be limited to use
> only one function call even when you have all the value needed to do
> much more... I also would have liked a way to bind that.
> 
> > Then it's like fixing a problem that is not broken.
> 
> Seriously ? Our binding are massively behind. We have barely one
> maintained binding, JS and a few other that are slowly dying. If half
> of our API was present in them, I would be happy, but that's far from
> being the case. So what is the status of the Perl, Python, Ruby, Go
> and all other bindings ? Tell me they are all great, cover 80% of our
> API (I am not even asking for 100%) and well maintained.
> 

Ruby binding follows the 1.7.4 API, anv covers not far from 100% of evas, 
ecore, e_dbus,
edje, eet, efreet, eio, elementary, embryo, ethumb, eina_list, eina_hash, 
eina_file.
eeze and emotion will quickly follow. (as a 1:1 binding).

About eo, I haven't thought much about how to go further with the ruby binding,
but I'm a little worried for now.

> > Raster had better points, which could be easily fixable in a simpler way
> > (unified callbacks, references, type). The Eo is bringing a problem, not
> > solving one :-( Actually it would be better to have invested in something
> > like Vala, that looks like a higher level language that translates to C,
> > other than doing this in C and having to solve problems everywhere else,
> > like tools, debugger... the so called "e ide".
> 
> Seriously ? You want to rewrite EFL in Vala ? Wasn't it Go or Python last 
> time ?
> --
> Cedric BAIL
> 
> ------------------------------------------------------------------------------
> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
> MVPs and experts. SALE $99.99 this month only -- learn more at:
> http://p.sf.net/sfu/learnmore_122412
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

-- 
Jérémy Zurcher
av General Guisan 49
1400 Yverdon-les-bains
+41 (0) 79 599 84 27

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to