Hi all, Some fixes can be found at https://git.enlightenment.org/core/efl.git/log/?h=devs/barbieri/future these will be reviewed and then merged with the original commits prior to landing tomorrow.
BR, On Fri, Aug 25, 2017 at 11:09 PM, Gustavo Sverzut Barbieri <barbi...@gmail.com> wrote: > Hi all, > > As some may have followed at IRC, ProFUSION embedded systems dedicate > some effort to make a new, simpler, leaner and easier Future and > Promise implementation. > > If you're new to Promise and Future, want to know what problems it > solve and how our design looks, please read > https://phab.enlightenment.org/w/future_promise/ (which I just > updated, then if you read it before, do it again). > > Our engineer, Guilherme Iscaro, worked for weeks and more than 10 > interactions to deliver the code at > https://phab.enlightenment.org/D5131, which I kindly ask for you to > review and test. I plan to merge this on Monday night if nothing big > shows. > > What makes us happy is that the core is very lean on memory and > simple. So easy that it could be moved to Eina, solving the old > implementation issue where promise was implemented in one library > while Future was in another -- They also involved Eo, which is way > heavier than our new implementation which is only 16 bytes per Promise > and 28 bytes per Future (32bits). > > With some macros with could deliver some syntax sugar to eliminate > functions with half dozen "NULL" pointers. Even better one can also > provide "named" parameters using the structure members. > > Previously ignored and now handled is the type of the result. Before > the function would get a pointer to the value and would need to know > how to interpret it, trusting it's the expected type and how to > release the memory was mostly undefined, particularly with chaining > and conversion. > > Eina_Value is used to carry type information with the actual value, > providing many benefits: > - runtime type checking > - provides information how to release memory (eina_value_flush) > - provides information how to copy memory (eina_value_copy) > - provides conversion to other types, like to string (eina_value_to_string) > - extensible, one can provide new Eina_Value_Type in their own code/library > - can be passed on the stack and returned as value, avoid memory > allocations and programming errors. > > There is a drawback: it's recommended to always check value.type prior > to use eina_value_get(), some utilities are provided to help with > basic types. C++ should provide some templates to help with such > mundane tasks. In C11 we could use _Generic() to provide something > similar. > > This email is already long enough, please check the Wiki for > motivation, details and examples. > https://phab.enlightenment.org/w/future_promise/ > > Please review the code before Monday night, when I plan to merge this. > https://phab.enlightenment.org/D5131 > > Cheers, > > -- > Gustavo Sverzut Barbieri > -------------------------------------- > Mobile: +55 (16) 99354-9890 -- Gustavo Sverzut Barbieri -------------------------------------- Mobile: +55 (16) 99354-9890 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel