guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: api differences between 1.4 and 1.6


From: Neil Jerram
Subject: Re: api differences between 1.4 and 1.6
Date: 22 Feb 2002 23:18:10 +0000
User-agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7

>>>>> "Thien-Thi" == Thien-Thi Nguyen <address@hidden> writes:

    Thien-Thi>    From: Neil Jerram <address@hidden>
    Thien-Thi>    Date: 22 Feb 2002 15:32:04 +0000

    Thien-Thi>    What do you mean by an xref script?

    Thien-Thi> sorry i was unclear...

    Thien-Thi>    It seemed to me that the necessary next steps were to group
    Thien-Thi>    everything from your C/Scheme new/old lists into functional 
groups,
    Thien-Thi>    and then for each group try to explain the 
change/removal/addition.
    Thien-Thi>    I also think that we should classify a lot of stuff as
    Thien-Thi>    internal/experimental - i.e. "use at your own risk", and not 
such a
    Thien-Thi>    high priority for us to document right now.  (For example, 
anything
    Thien-Thi>    scm_gc_* would be internal, and environments and anything in 
C to do
    Thien-Thi>    with GOOPS would be experimental.)

    Thien-Thi> yes, this is exactly what needs to be done.  to me, this is all
    Thien-Thi> "xref"-ish in nature: given a symbol (j.r.hacker asks "i want to 
use
    Thien-Thi> QUX, what are the ramifications of this function?"), the 
database can
    Thien-Thi> respond: QUX, a proc, is present in libguile x.y.z and libguile 
q.r.s,
    Thien-Thi> part of the group "internal procs that begin with Q, 
experimental, so
    Thien-Thi> don't use it", documentation available in info node "subversive 
hacks",
    Thien-Thi> referenced as deprecated in NEWS, referenced as deprecated in 
info node
    Thien-Thi> "internal procs deprecation", reference material in info node 
"internal
    Thien-Thi> procs"...

    Thien-Thi> or perhaps: QUX, no info available, be very scared.

    Thien-Thi> similar attributes could be mined for scheme symbols.

    Thien-Thi> i guess my intention is to not do the actual grouping (manually) 
so much
    Thien-Thi> as to codify some mechanism for specifying/reporting groupings.  
maybe
    Thien-Thi> the best way to do this is to annotate the original alists 
(which is why
    Thien-Thi> they are alists and not simply lists), with grouping info.  what 
do you
    Thien-Thi> think?

I think you're right that a mechanism would be better than doing it by
hand, and a database that could give the answers about QUX that you
describe above would be amazing.  I'll have a think about how we could
design such things.

However, as it happens I've already spent a little time beginning to
sort things manually, and it isn't going to help anyone just sitting
on my hard disc, so I've appended it below, in case it's useful.  (It
only covers the C changes, not Scheme.)

        Neil


-*- outline -*-

* External

Entries in this section cover things that were likely to be perceived
as for use outside the libguile implementation itself.

** Covered in NEWS file

*** Removed

gh_int2scmb
scm_fseek
scm_listify
scm_make_cont
scm_strhash
scm_sysmissing
scm_tag

*** Added

scm_list_n
scm_make_continuation
scm_string_hash

** Covered in NEWS file, but not adequately!

*** Removed

scm_struct_init
scm_symhash_dim

** Removal of named hooks

Never a good idea, previously deprecated, now removed.  If someone can
give an example of how this primitive was useful, I'll suggest how to
obtain equivalent function without this primitive.

*** Removed

scm_make_hook_with_name

** Reimplementation of guardians

Top level API unchanged, but implementation improved and primitives
added to control guardian behaviour in more detail than before.  See
`Guardians' node in manual.

*** Removed

scm_init_guardian

*** Added

scm_destroy_guardian_x
scm_guardian_destroyed_p
scm_guardian_greedy_p
scm_init_guardians

** Renaming of module primitives

The following were renamed so that the C and Scheme names match.

*** Removed

scm_select_module
scm_selected_module

*** Added

scm_set_current_module
scm_current_module

** Convenient functions for calling procedures

*** Added

scm_apply_0
scm_apply_1
scm_apply_2
scm_apply_3
scm_call_0
scm_call_1
scm_call_2
scm_call_3
scm_call_4

** New POSIX features

*** Added

scm_chroot
scm_close_fdes
scm_crypt
scm_cuserid
scm_dup2
scm_flock
scm_gethostname
scm_getitimer
scm_getlogin
scm_getpass
scm_getpriority
scm_inet_ntop
scm_inet_pton
scm_mkstemp
scm_sethostname
scm_setitimer
scm_setpriority

** Changes to numbers

???

*** Added

scm_double2num
scm_float2num
scm_i_adjbig
scm_i_big2dbl
scm_i_big2inum
scm_i_copybig
scm_i_dbl2big
scm_i_display_error
scm_i_eval
scm_i_eval_x
scm_i_get_keyword
scm_i_int2big
scm_i_long2big
scm_i_long_long2big
scm_i_mkbig
scm_i_normbig
scm_i_ptrdiff2big
scm_i_short2big
scm_i_size2big
scm_i_uint2big
scm_i_ulong2big
scm_i_ulong_long2big
scm_i_ushort2big
scm_int2num
scm_num2double
scm_num2float
scm_num2int
scm_num2ptrdiff
scm_num2short
scm_num2size
scm_num2uint
scm_num2ulong_long
scm_num2ushort
scm_ptrdiff2num
scm_short2num
scm_size2num
scm_uint2num
scm_ulong_long2num
scm_ushort2num

*** Removed

scm_long2big
scm_long_long2big
scm_ulong2big

* Quasi-internal

Entries in this section were/are not intended (AFAIK) for use outside
the libguile implementation itself.  So the changes arguably require
less justification than those above.

** LT_DL

???

*** Removed

lt_dladderror
lt_dladdsearchdir
lt_dlcaller_get_data
lt_dlcaller_register
lt_dlcaller_set_data
lt_dlclose
lt_dlerror
lt_dlexit
lt_dlforeach
lt_dlfree
lt_dlgetinfo
lt_dlgetsearchpath
lt_dlhandle_next
lt_dlinit
lt_dlisresident
lt_dlloader_add
lt_dlloader_data
lt_dlloader_find
lt_dlloader_name
lt_dlloader_next
lt_dlloader_remove
lt_dlmakeresident
lt_dlmalloc
lt_dlmutex_register
lt_dlopen
lt_dlopenext
lt_dlpreload
lt_dlpreload_default
lt_dlseterror
lt_dlsetsearchpath
lt_dlsym

** Removal of vcells and obarrays

Marius' ChangeLog entry:

        The concept of vcells has been removed from Guile.  With it,
        explicit obarrays and associated operations are gone.  Use
        hashtables instead of obarrays.

        Throughout: use scm_sym2var instead of scm_sym2vcell and treat
        result as variable instead of vcell.  Glocs no longer point to a
        vcell but to a variable.  Use scm_c_define instead of
        scm_sysintern and treat the result as a variable (which it is),
        not a vcell.

*** Removed

scm_builtin_bindings
scm_builtin_weak_bindings

** GOOPS

GOOPS, previously distributed separately, has been integrated with
libguile.  The Scheme level works well, but the C API should still be
considered experimental and subject to change.

*** Added

scm_accessor_method_slot_definition
scm_add_method
scm_add_slot
scm_basic_basic_make_class
scm_basic_make_class
scm_class_accessor
scm_class_class
scm_class_direct_methods
scm_class_direct_slots
scm_class_direct_subclasses
scm_class_direct_supers
scm_class_double
scm_class_entity
scm_class_entity_class
scm_class_entity_with_setter
scm_class_environment
scm_class_float
scm_class_foreign_class
scm_class_foreign_object
scm_class_foreign_slot
scm_class_generic
scm_class_generic_with_setter
scm_class_input_output_port
scm_class_input_port
scm_class_int
scm_class_keyword
scm_class_list
scm_class_method
scm_class_name
scm_class_number
scm_class_object
scm_class_opaque
scm_class_operator_class
scm_class_operator_with_setter_class
scm_class_output_port
scm_class_port
scm_class_precedence_list
scm_class_procedure_class
scm_class_protected
scm_class_protected_opaque
scm_class_protected_read_only
scm_class_read_only
scm_class_scm
scm_class_self
scm_class_simple_method
scm_class_slots
scm_class_top
scm_components
scm_compute_applicable_methods
scm_enable_primitive_generic_x
scm_ensure_accessor
scm_find_method
scm_generic_capability_p
scm_generic_function_methods
scm_generic_function_name
scm_get_keyword
scm_init_goops
scm_init_goops_builtins
scm_instance_p
scm_load_goops
scm_m_atdispatch
scm_m_atslot_ref
scm_m_atslot_set_x
scm_make
scm_make_class
scm_make_foreign_object
scm_make_method_cache
scm_method_generic_function
scm_method_procedure
scm_method_specializers
scm_module_goops
scm_primitive_generic_generic
scm_s_slot_set_x
scm_slot_bound_p
scm_slot_bound_using_class_p
scm_slot_exists_using_class_p
scm_slot_ref
scm_slot_ref_using_class
scm_slot_set_using_class_x
scm_slot_set_x
scm_slots_exists_p
scm_sys_allocate_instance
scm_sys_compute_applicable_methods
scm_sys_compute_slots
scm_sys_fast_slot_ref
scm_sys_fast_slot_set_x
scm_sys_inherit_magic_x
scm_sys_initialize_object
scm_sys_invalidate_class
scm_sys_invalidate_method_cache_x
scm_sys_method_more_specific_p
scm_sys_modify_class
scm_sys_modify_instance
scm_sys_prep_layout_x
scm_sys_set_object_setter_x
scm_sys_tag_body
scm_wrap_component
scm_wrap_object

** First-class environments

All the new code in environments.[ch] is experimental, and not yet
integrated with the rest of libguile.

*** Added

scm_c_environment_cell
scm_c_environment_fold
scm_c_environment_observe
scm_c_environment_ref
scm_environment_bound_p
scm_environment_cell
scm_environment_define
scm_environment_fold
scm_environment_observe
scm_environment_observe_weak
scm_environment_p
scm_environment_ref
scm_environment_set_x
scm_environment_undefine
scm_environment_unobserve
scm_environments_prehistory
scm_error_environment_immutable_binding
scm_error_environment_immutable_location
scm_error_environment_unbound
scm_eval_environment_imported
scm_eval_environment_local
scm_eval_environment_p
scm_eval_environment_set_imported_x
scm_eval_environment_set_local_x
scm_export_environment_p
scm_export_environment_private
scm_export_environment_set_private_x
scm_export_environment_set_signature_x
scm_export_environment_signature
scm_import_environment_imports
scm_import_environment_p
scm_import_environment_set_imports_x
scm_init_environments
scm_leaf_environment_p
scm_make_environment
scm_make_eval_environment
scm_make_export_environment
scm_make_import_environment
scm_make_leaf_environment
scm_system_environment
scm_tc16_environment
scm_tc16_observer
scm_type_eval_environment
scm_type_export_environment
scm_type_import_environment
scm_type_leaf_environment

** New deprecation mechanism

Intended for internal use only?

*** Added

issued_msgs
scm_c_issue_deprecation_warning
scm_include_deprecated_features
scm_init_deprecation
scm_issue_deprecation_warning

** Error handling cleanups

*** Added

scm_arg_type_key
scm_args_number_key
scm_error_num_args_subr
scm_memory_alloc_key
scm_misc_error_key
scm_num_overflow_key
scm_out_of_range_key
scm_s_duplicate_bindings
scm_s_duplicate_formals
scm_system_error_key

** GC related

???

*** Removed

scm_gc_async
scm_gc_end
scm_gc_rt
scm_gc_start

*** Added

scm_gc_cells_marked_acc
scm_gc_cells_swept
scm_gc_cells_swept_acc
scm_gc_mark_dependencies
scm_gc_mark_time_taken
scm_gc_protect_object
scm_gc_register_root
scm_gc_register_roots
scm_gc_running_p
scm_gc_sweep_time_taken
scm_gc_times
scm_gc_unprotect_object
scm_gc_unregister_root
scm_gc_unregister_roots
scm_remember_upto_here
scm_remember_upto_here_1
scm_remember_upto_here_2

* Unclassified

** Removed

scm_call_continuation
scm_can_use_top_level_lookup_closure_var
scm_init_tag
scm_make_fptob
scm_make_sfptob
scm_make_stptob
scm_post_boot_init_modules
scm_sysintern0_no_module_lookup
scm_the_last_stack_fluid
scm_unhash_name

** Added

scm_allocate_string
scm_c_call_with_current_module
scm_c_define
scm_c_define_gsubr
scm_c_define_gsubr_with_generic
scm_c_define_module
scm_c_define_subr
scm_c_define_subr_with_generic
scm_c_eval_string
scm_c_export
scm_c_get_internal_run_time
scm_c_load_extension
scm_c_lookup
scm_c_make_gsubr
scm_c_make_gsubr_with_generic
scm_c_make_hash_table
scm_c_make_subr
scm_c_make_subr_with_generic
scm_c_make_vector
scm_c_memq
scm_c_module_define
scm_c_module_lookup
scm_c_primitive_load
scm_c_primitive_load_path
scm_c_read
scm_c_read_string
scm_c_register_extension
scm_c_resolve_module
scm_c_use_module
scm_c_with_fluid
scm_c_with_fluids
scm_c_write
scm_current_module_lookup_closure
scm_current_module_transformer
scm_define
scm_done_free
scm_env_module
scm_eval_closure_lookup
scm_file_port_p
scm_gentemp
scm_get_output_string
scm_get_pre_modules_obarray
scm_get_stack_base
scm_init_extensions
scm_init_guile
scm_init_properties
scm_init_rdelim
scm_init_rdelim_builtins
scm_init_rw
scm_init_rw_builtins
scm_init_symbols_deprecated
scm_init_values
scm_interaction_environment
scm_list_1
scm_list_2
scm_list_3
scm_list_4
scm_list_5
scm_load_extension
scm_lookup
scm_lookup_closure_module
scm_m_at_call_with_values
scm_mem2string
scm_mem2symbol
scm_micro_version
scm_module_define
scm_module_lookup
scm_module_reverse_lookup
scm_module_system_booted_p
scm_module_tag
scm_module_transformer
scm_modules_prehistory
scm_must_strdup
scm_must_strndup
scm_object_to_string
scm_open_input_string
scm_open_output_string
scm_port_for_each
scm_port_p
scm_pre_modules_obarray
scm_primitive_eval
scm_primitive_eval_x
scm_primitive_make_property
scm_primitive_property_del_x
scm_primitive_property_ref
scm_primitive_property_set_x
scm_print_symbol_name
scm_read_string_x_partial
scm_set_smob_apply
scm_standard_interface_eval_closure
scm_str2symbol
scm_string_split
scm_struct_prehistory
scm_structs_to_free
scm_sym2var
scm_sym_at_call_with_values
scm_symbols_prehistory
scm_system_transformer
scm_take_from_input_buffers
scm_tc16_continuation
scm_tc16_eval_closure
scm_tc16_fport
scm_tc16_strport
scm_the_last_stack_fluid_var
scm_top_level_lookup_closure_var
scm_valid_object_procedure_p
scm_values
scm_values_vtable
scm_variable_set_name_hint
scm_write_string_partial




reply via email to

[Prev in Thread] Current Thread [Next in Thread]