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. > 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? 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? 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. o Many constants have been changed but from what I have seen only in the generated eo code 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: • 3 signs your SCM is hindering your productivity • Requirements for releasing software faster • 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
