summaryrefslogtreecommitdiff
path: root/TODO
blob: 8c657d60475d318ab4f9e097204a9a56aee4dbdd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[ID: $Id: TODO,v 1.17 2001-06-29 08:10:00 kei Exp $]

These TODO items are grouped by target release version.  The first group is
the "Eventually" group, which is not associated w/ any particular version.
Move these items under a version upon completion (or better yet, ownership).

Upon completion, simply change the "-" to a "+", but do not delete the item.
At release time, the "+" entries will be deleted after review to make sure
that user-visible changes are reflected in NEWS (and that proper credit is
applied :-).

Ownership is indicated by `[USERNAME]'.  Maintainers (w/ write privs) can
indicate sponsorship by `[ACTUAL-OWNER:MAINTAINER]', where both elements are
usernames.

If you would like to suggest changes or contribute patches, please first email
guile-devel@gnu.org to coordinate efforts.  If you distribute this file,
please include the first line and check around on the Internet for updates.

See also file HACKING.

------------------------------------------------------------------------------

=== Eventually:

- deprecate `read-only-string?'
- [after signal handling and threading have been fixed] remove the code
  corresponding to GUILE_OLD_ASYNC_CLICK and the corresponding
  GUILE_OLD_ASYNC_CLICK macro.
- implement and integrate generational garbage collection
- add POSIX thread support
- factor thread support out of libguile
- protect common resources using mutecis from the new interface
- remove the dynamic roots
- revise the fluid implementation
- implement the GC thread synchronization (all threads: go to sleep!)
- implementing the libguileposix threads glue library
- GOOPS
  - develop better representation for GOOPS objects
  - rewrite method cache management in C
  - rewrite core macros (define-class et al) in C
  - define C API
- write Orbit CORBA interface
- [after new module system] factor out modules sort.c and random.c should be
  factored out into separate modules

=== In release 1.6.0:

- Make sure that the deprecation mechanism explained in INSTALL and
  README is completed and works.

=== In release 1.8.0:

- remove deprecated "scm_*_t" type names in libguile.h.

- remove re-exporting behaviour of `export'.
    in boot-9.scm, remove begin-deprecated part of `module-export!'
    in format.scm, remove kluge at top
    in srfi13.scm, likewise

- remove deprecated subr and gsubr functions
    in procs.h, procs.c: scm_make_subr, scm_make_subr_opt,
      scm_make_subr_with_generic,
    in gsubr.h, gsubr.c: scm_make_gsubr, scm_make_gsubr_with_generic.

- remove deprecated C interface to modules
    in modules.h, modules.c:
      root_module_lookup_closure, scm_sym_app, scm_sym_modules,
      module_prefix, make_modules_in_var, beautify_user_module_x_var,
      scm_the_root_module, scm_make_module, scm_ensure_user_module,
      scm_load_scheme_module

- remove vcell and obarray support.
  Remove all code bracketed by `#if SCM_ENABLE_VCELLS'.
  Remove SCM_ENABLE_VCELLS itself.
  Also remove `variable-set-name-hint' completely.

- remove compatability module (ice-9 and-let*).  It
  has been replaced by (ice-9 and-let-star) and/or (srfi srfi-2).

- remove support for autoloading compiled-code modules:
    try-module-linked
    try-module-dynamic-link
    init-dynamic-module, etc.
    scm_register_module_xxx
    scm_registered_modules
    scm_clear_registered_modules

- remove deprecated variables:
    scm_top_level_lookup_closure_var
    scm_scm_system_transformer
    Remove all code that still sets them:
     `use-syntax', scm_set_current_module, ...

- remove deprecated functions:
    eval.c: scm_eval2, scm_eval_3
    load.c: scm_read_and_eval_x
    smob.c: scm_make_smob_type_mfpe, scm_set_smob_mfpe
    gc.c: scm_remember
    string.c: scm_makstr, scm_makfromstr
- remove deprecated procedures:
    boot-9.scm: eval-in-module, id, -1+, return-it, string-character-length,
      flags
- remove deprecated macros: SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL,
  SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL,
  SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD,
  SCM_ORD_SIG, SCM_NUM_SIGS, SCM_SLOPPY_STRINGP, SCM_VALIDATE_STRINGORSUBSTR,
  SCM_FREEP, SCM_NFREEP, SCM_CHARS, SCM_UCHARS, SCM_VALIDATE_ROSTRING,
  SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH,
  SCM_LENGTH, SCM_HUGE_LENGTH, SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET,
  SCM_COERCE_SUBSTR, SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING,
  SCM_ROCHARS, SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX,
  SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR,
  SCM_SUBR_DOC, SCM_OPDIRP, SCM_VALIDATE_OPDIR, SCM_WTA, RETURN_SCM_WTA,
  SCM_WNA, SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
  SCM_VALIDATE_NUMBER_DEF_COPY, SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP,
  SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_SETAND_CAR, SCM_SETOR_CAR,
  SCM_ARRAY_CONTIGUOUS,
  SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
  SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9
- remove scm_listify
- remove scm_vector_set_length_x
- remove function scm_call_catching_errors
  (replaced by catch functions from throw.[ch])
- remove support for "#&" reader syntax in (ice-9 optargs).
- remove scm_make_shared_substring
- remove scm_read_only_string_p
- remove scm_strhash
- remove scm_tc7_ssymbol
- remove scm_tc7_msymbol
- remove scm_tcs_symbols
- remove scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member
- consider removing the automatic loading of (ice-9 rdelim) when guile
  starts up.  This would be a brave move, since a lot of code will
  assume that read-line is available by default.  However it would make
  it easier to use alternative implementations of this module, e.g., a
  strictly scsh-compatible version which uses multiple values.  For
  interactive use it would be easy to load the module in ~/.guile.
- remove scm_close_all_ports_except
- remove scm_strprint_obj
- remove SCM_CONST_LONG
- remove scm_wta
- remove deprecated typedefs: long_long, ulong_long, scm_sizet
- remove deprecated macros: scm_contregs, scm_port_rw_active,
  scm_port, scm_ptob_descriptor, scm_debug_info, scm_debug_frame,
  scm_fport, SCM_FIXNUM_BIT, scm_option, scm_subr_entry, scm_rstate,
  scm_rng, scm_i_rstate, scm_srcprops, scm_srcprops_chunk,
  scm_info_frame, scm_stack, scm_array, scm_array_dim.
- remove deprecated functions: scm_mkbig, scm_big2num, scm_adjbig,
  scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl.
- remove deprecated functions: scm_protect_object,
  scm_unprotect_object, scm_create_hook.

[TODO ends here]