On Tue, 6 May 2014 13:51:37 +0200 Stefan Schmidt <[email protected]>
said:

> Hello.
> 
> On Wed, 2014-04-30 at 16:11, Tom Hacohen wrote:
> > Hey,
> > 
> > As promised, these are my ABI reports. There's a bit of noise because of 
> > the switch to Eo2 and the fact that our object's Eo API is not always 
> > ifdefed out in the headers (the Eo api is though, so they can't be used 
> > without the define). Also, obviously, the symbols exposed in the binary 
> > that can not be turned off. I think though, that it's easy enough to 
> > scan through the noise and find the issues.
> > 
> > Here's the new index for all the scans:
> > http://enlightenment.org/~tasn/abi/
> > 
> > 
> > Please have a look and share if you see anything suspicious.
> 
> I like to have some more people looking over this. The list out of my
> head would be raster, cedric and k-s as they have expenrience with
> this but obviously everyone is welcome.

i have it marked. i just havent managed to have time due to travels (and now a
cat sleeping on my left hand).

> > A good example would be:
> >   [+] elm_widget_focus_highlight_geometry_get ( Evas_Object const* obj, 
> > Evas_Coord* x, Evas_Coord* y, Evas_Coord* w, Evas_Coord* h ) (1)
> > 
> > But I guess that's "fine" because it's internal.
> 
> The application linked against the old lib and now switching to the
> new one should still work with this. A problem arises this new
> parameter changes the behaviour if not set. Its available through
> elm_widget.h so its not really internal.
> 
> I spent some time going through this and want to share and discuss my
> doubts. Starting with elm, efl is below.
> 
> Elementary:
> -----------
> 
> o 1359 new symbols added. The Majority it due to eolian/eo2 and thus
> not so relevant until we declare them stable.
> 
> o There are some other symbols added though which one can easily miss.
> Listing them here and I would like to hear comments if we are fine
> with maintaining these new APIs
> 
> Newly added symbols:
> 
> elm_config.h, libelementary.so.1.10.0
> elm_config_accel_preference_get ( )
> elm_config_accel_preference_set ( char const* pref )
> elm_config_atspi_mode_get ( )
> elm_config_atspi_mode_set ( Eina_Bool is_atspi )
> elm_config_color_classes_list_free ( Eina_List* list )
> elm_config_color_classes_list_get ( )
> elm_config_color_overlay_apply ( )
> elm_config_color_overlay_list_get ( )
> elm_config_color_overlay_set ( char const* color_class, int r, int g, int b,
> int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3 )
> elm_config_color_overlay_unset ( char const* color_class )
> elm_config_focus_auto_scroll_bring_in_enabled_get ( )
> elm_config_focus_auto_scroll_bring_in_enabled_set ( Eina_Bool enabled )
> elm_config_focus_highlight_clip_disabled_get ( )
> elm_config_focus_highlight_clip_disabled_set ( Eina_Bool disable )
> elm_config_focus_move_policy_get ( ) elm_config_focus_move_policy_set ( enum
> Elm_Focus_Move_Policy policy ) elm_config_item_select_on_focus_disabled_get
> ( ) elm_config_item_select_on_focus_disabled_set ( Eina_Bool enabled )
> 
> elm_focus.h, libelementary.so.1.10.0
> elm_object_focused_item_get ( Evas_Object const* obj )
> elm_object_item_focus_get ( Elm_Object_Item const* it )
> elm_object_item_focus_set ( Elm_Object_Item* it, Eina_Bool focused )
> 
> elm_scroll.h, libelementary.so.1.10.0
> elm_object_scroll_item_loop_enabled_get ( Evas_Object const* obj )
> elm_object_scroll_item_loop_enabled_set ( Evas_Object* obj, Eina_Bool enable )
> 
> elm_widget.h, libelementary.so.1.10.0
> _elm_widget_item_focus_get ( Elm_Widget_Item const* item )
> _elm_widget_item_focus_get_hook_set ( Elm_Widget_Item* item,
> Elm_Widget_Focus_Get_Cb func ) _elm_widget_item_focus_set ( Elm_Widget_Item*
> item, Eina_Bool focused ) _elm_widget_item_focus_set_hook_set
> ( Elm_Widget_Item* item, Elm_Widget_Focus_Set_Cb func )
> elm_widget_focus_highlight_enabled_get ( Evas_Object const* obj )
> elm_widget_focus_highlight_focus_part_geometry_get ( Evas_Object const* obj,
> Evas_Coord* x, Evas_Coord* y, Evas_Coord* w, Evas_Coord* h )
> elm_widget_focused_item_get ( Evas_Object const* obj )
> elm_widget_item_loop_enabled_get ( Evas_Object const* obj )
> elm_widget_item_loop_enabled_set ( Evas_Object* obj, Eina_Bool enable )
> elm_gengrid.eo.legacy.h, libelementary.so.1.10.0
> elm_gengrid_wheel_disabled_get ( Eo const* obj )
> elm_gengrid_wheel_disabled_set ( Eo* obj, Eina_Bool disabled )
> 
> 
> I also wonder why we have some newly added symbols in the generated legacy
> headers. Should they not cover what we already had thus legacy?
> 
> 
> elm_gengrid_legacy.h, libelementary.so.1.10.0
> elm_gengrid_reorder_mode_start ( Evas_Object* obj, Ecore_Pos_Map tween_mode )
> elm_gengrid_reorder_mode_stop ( Evas_Object* obj )
> 
> elm_photo.eo.legacy.h, libelementary.so.1.10.0
> elm_photo_editable_get ( Eo const* obj )
> elm_photo_fill_inside_get ( Eo const* obj )
> elm_photo_size_get ( Eo const* obj )
> 
> elm_route.eo.legacy.h, libelementary.so.1.10.0
> elm_route_emap_set ( Eo* obj, void* emap )
> 
> o Removed symbols seem only to come from the eo2 change which we have
> declared unstable right now. But please have another look if that is
> correct:
> 
> elm_atspi_object_eo.h, libelementary.so.1.9.3
> elm_atspi_component_interface_get ( )
> elm_atspi_obj_class_get ( )
> elm_atspi_widget_obj_class_get ( )
> elm_atspi_window_interface_get ( )
> 
> elm_interface_fileselector.h, libelementary.so.1.9.3
> elm_fileselector_interface_get ( )
> 
> elm_interface_scrollable.h, libelementary.so.1.9.3
> elm_obj_pan_eo_class_get ( )
> elm_scrollable_interface_get ( )
> 
> elm_web_legacy.h, libelementary.so.1.9.3
> elm_web_uri_get ( Evas_Object const* obj )
> 
> ^^^^ This one looks suspicious to me. Can our elm and webkit people please
> comment on this removal?

i saw that and made a mental note to look, but it almoste certainly should not
have gone away.

> elm_widget.h, libelementary.so.1.9.3
> elm_widget_class_get ( )
> 
> o Other problems
> 
> elm_map_legacy.h, libelementary.so.1.9.3
> [−] elm_map_canvas_to_region_convert ( Evas_Object const* obj, Evas_Coord
> const x, Evas_Coord const y, double* lon, double* lat ) (2) changed to:
> elm_map_canvas_to_region_convert ( Eo const* obj, Evas_Coord x, Evas_Coord y,
> double* lon, double* lat )
> 
> The removal of the const here can cause us trouble or am I wrong?

no. those consts for x and wy are basically useless and misleading.++
> o We also have tons of changes in all legacy headers from Evas_Object
> to Eo, but I guess that might be ok in the legacy headers.

yeah. thats fine given the new efl infra.

> o Many constants have been changed but from what I have seen only in
> the generated eo code

thats the problem with the abi check. it includes the eo apis and that adds a
lot of noise.

> EFL:
> ----
> o Ignoring all eo based added symbols I see the following new ones.
> Are we fine with maintaining those?
> 
> Ecore_Evas.h, libecore_evas.so.1.10.0
> ecore_evas_aux_hint_add ( Ecore_Evas* ee, char const* hint, char const* val )
> ecore_evas_aux_hint_del ( Ecore_Evas* ee, int const id )
> ecore_evas_aux_hint_val_set ( Ecore_Evas* ee, int const id, char const* val )
> ecore_evas_aux_hints_allowed_get ( Ecore_Evas const* ee )
> ecore_evas_aux_hints_supported_get ( Ecore_Evas const* ee )
> 
> Ecore_X_Atoms.h, libecore_x.so.1.10.0
> ECORE_X_ATOM_E_WINDOW_AUX_HINT [data]
> ECORE_X_ATOM_E_WINDOW_AUX_HINT_ALLOWED [data]
> ECORE_X_ATOM_E_WINDOW_AUX_HINT_SUPPORT [data]
> ECORE_X_ATOM_E_WINDOW_AUX_HINT_SUPPORTED_LIST [data]
> 
> Edje_Common.h, libedje.so.1.10.0
> edje_object_part_object_name_get ( Evas_Object const* obj )
> 
> Eet.h, libeet.so.1.10.0
> eet_data_image_colorspace_get ( Eet_File* ef, char const* name, char const*
> cipher_key, Eet_Colorspace const** cspaces )
> eet_data_image_decode_to_cspace_surface_cipher ( void const* data, char
> const* cipher_key, int size, unsigned int src_x, unsigned int src_y, unsigned
> int* d, unsigned int w, unsigned int h, unsigned int row_stride,
> Eet_Colorspace cspace, int* alpha, int* comp, int* quality,
> Eet_Image_Encoding* lossy ) eet_data_image_read_to_cspace_surface_cipher
> ( Eet_File* ef, char const* name, char const* cipher_key, unsigned int src_x,
> unsigned int src_y, unsigned int* d, unsigned int w, unsigned int h, unsigned
> int row_stride, Eet_Colorspace cspace, int* alpha, int* comp, int* quality,
> Eet_Image_Encoding* lossy ) eet_data_read_cipher_buffer ( Eet_File* ef,
> Eet_Data_Descriptor* edd, char const* name, char const* cipher_key, char*
> buffer, int buffer_size )
> 
> Eeze.h, libeeze.so.1.10.0
> eeze_udev_get ( )
> eeze_udev_syspath_check_property ( char const* syspath, char const* property,
> char const* value ) eeze_udev_syspath_check_sysattr ( char const* syspath,
> char const* sysattr, char const* value )
> eeze_udev_syspath_get_parent_filtered ( char const* syspath, char const*
> subsystem, char const* devtype )
> 
> eina_accessor.h, libeina.so.1.10.0
> eina_accessor_clone ( Eina_Accessor* accessor )
> 
> eina_hash.h, libeina.so.1.10.0
> eina_hash_list_append ( Eina_Hash* hash, void const* key, void const* data )
> eina_hash_list_prepend ( Eina_Hash* hash, void const* key, void const* data )
> eina_hash_list_remove ( Eina_Hash* hash, void const* key, void const* data )
> 
> eina_inarray.h, libeina.so.1.10.0
> eina_inarray_resize ( Eina_Inarray* array, unsigned int new_size )
> 
> eina_log.h, libeina.so.1.10.0
> eina_log_domain_registered_level_set ( int domain, int level )
> 
> Eio.h, libeio.so.1.10.0
> eio_memory_burst_limit_get ( )
> eio_memory_burst_limit_set ( size_t limit )
> 
> Evas_Common.h, libevas.so.1.10.0
> evas_font_path_global_append ( char const* path )
> evas_font_path_global_clear ( )
> evas_font_path_global_list ( )
> evas_font_path_global_prepend ( char const* path )
> 
> o Same question why we have new symbols listed in legacy as I raised in elm
> 
> evas.eo.legacy.h, libevas.so.1.10.0
> evas_event_feed_key_down_with_keycode ( Eo* obj, char const* keyname, char
> const* key, char const* string, char const* compose, unsigned int timestamp,
> void const* data, unsigned int keycode ) evas_event_feed_key_up_with_keycode
> ( Eo* obj, char const* keyname, char const* key, char const* string, char
> const* compose, unsigned int timestamp, void const* data, unsigned int
> keycode )
> 
> evas_image.eo.legacy.h, libevas.so.1.10.0
> evas_object_image_mmap_get ( Eo const* obj, Eina_File const** f, char const**
> key ) evas_object_image_scene_get ( Eo const* obj )
> evas_object_image_scene_set ( Eo* obj, Evas_3D_Scene* scene )
> 
> o Removed symbols have only been in EO headers
> 
> o Again some Evas_Object to Eo changes inEO legacy headers.
> 
> o Some changes in eet public APIs from int to Eet_Image_Encoding enum
> 
> Eet.h, libeet.so.1.9.3
> [+] eet_data_image_decode ( void const* data, int size, unsigned int* w,
> unsigned int* h, int* alpha, int* compress, int* quality, int* lossy ) (1)
> [+] eet_data_image_decode_cipher ( void const* data, char const* cipher_key,
> int size, unsigned int* w, unsigned int* h, int* alpha, int* compress, int*
> quality, int* lossy ) (1) [+] eet_data_image_decode_to_surface ( void const*
> data, int size, unsigned int src_x, unsigned int src_y, unsigned int* d,
> unsigned int w, unsigned int h, unsigned int row_stride, int* alpha, int*
> compress, int* quality, int* lossy ) (1) [+]
> eet_data_image_decode_to_surface_cipher ( void const* data, char const*
> cipher_key, int size, unsigned int src_x, unsigned int src_y, unsigned int*
> d, unsigned int w, unsigned int h, unsigned int row_stride, int* alpha, int*
> compress, int* quality, int* lossy ) (1) [+] eet_data_image_encode ( void
> const* data, int* size_ret, unsigned int w, unsigned int h, int alpha, int
> compress, int quality, int lossy ) (1) [+] eet_data_image_encode_cipher
> ( void const* data, char const* cipher_key, unsigned int w, unsigned int h,
> int alpha, int compress, int quality, int lossy, int* size_ret ) (1) [+]
> eet_data_image_header_decode ( void const* data, int size, unsigned int* w,
> unsigned int* h, int* alpha, int* compress, int* quality, int* lossy ) (1)
> [+] eet_data_image_header_decode_cipher ( void const* data, char const*
> cipher_key, int size, unsigned int* w, unsigned int* h, int* alpha, int*
> compress, int* quality, int* lossy ) (1) [+] eet_data_image_header_read
> ( Eet_File* ef, char const* name, unsigned int* w, unsigned int* h, int*
> alpha, int* compress, int* quality, int* lossy ) (1) [+]
> eet_data_image_header_read_cipher ( Eet_File* ef, char const* name, char
> const* cipher_key, unsigned int* w, unsigned int* h, int* alpha, int*
> compress, int* quality, int* lossy ) (1) [+] eet_data_image_read ( Eet_File*
> ef, char const* name, unsigned int* w, unsigned int* h, int* alpha, int*
> compress, int* quality, int* lossy ) (1) [+] eet_data_image_read_cipher
> ( Eet_File* ef, char const* name, char const* cipher_key, unsigned int* w,
> unsigned int* h, int* alpha, int* compress, int* quality, int* lossy ) (1)
> [+] eet_data_image_read_to_surface ( Eet_File* ef, char const* name, unsigned
> int src_x, unsigned int src_y, unsigned int* d, unsigned int w, unsigned int
> h, unsigned int row_stride, int* alpha, int* compress, int* quality, int*
> lossy ) (1) [+] eet_data_image_read_to_surface_cipher ( Eet_File* ef, char
> const* name, char const* cipher_key, unsigned int src_x, unsigned int src_y,
> unsigned int* d, unsigned int w, unsigned int h, unsigned int row_stride,
> int* alpha, int* compress, int* quality, int* lossy ) (1) [+]
> eet_data_image_write ( Eet_File* ef, char const* name, void const* data,
> unsigned int w, unsigned int h, int alpha, int compress, int quality, int
> lossy ) (1) [+] eet_data_image_write_cipher ( Eet_File* ef, char const* name,
> char const* cipher_key, void const* data, unsigned int w, unsigned int h, int
> alpha, int compress, int quality, int lossy ) (1) 
> 
> Somehow in the back of my head I have a note that enums are not int
> everywhere. Are we care about these cases?
> 
> o More constants changes in EO legacy headers
> 
> 
> This concludes what I have found. In summary I think most issues are
> noise from EO and get be ignored right now but we should have another
> look at the newly added APIs to make sure we are happy with them. Also
> the removal of elm_web_uri_get() strikes me odd and I would like to
> hear about it.
> 
> regards
> Stefan Schmidt
> 
> ------------------------------------------------------------------------------
> Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
> &#149; 3 signs your SCM is hindering your productivity
> &#149; Requirements for releasing software faster
> &#149; Expert tips and advice for migrating your SCM now
> http://p.sf.net/sfu/perforce
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
&#149; 3 signs your SCM is hindering your productivity
&#149; Requirements for releasing software faster
&#149; Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to