declare smobs in alloc.c
[bpt/emacs.git] / etc / NEXTSTEP
1 Copyright (C) 2008-2014 Free Software Foundation, Inc.
2 See the end of the file for license conditions.
3
4 This file contains information about GNU Emacs on "Nextstep" platforms.
5 The Nextstep support code works on many POSIX systems (and possibly
6 W32) using the GNUstep libraries, and on MacOS X systems using the
7 Cocoa libraries.
8
9 Background
10 ----------
11 Within Emacs, the port and its code are referred to using the term
12 "Nextstep", despite the fact that no system or API has been released
13 under this name in more than 10 years. Here's some background on why:
14
15 NeXT, Inc. introduced the NeXTstep API with its computer and operating
16 system in the late 1980's. Later on, in collaboration with Sun, this
17 API was published as a specification called OpenStep. The GNUstep
18 project started in the early 1990's to provide a free implementation
19 of this API. Later on, Apple bought NeXT (some would say "NeXT bought
20 Apple") and made OpenStep the basis of OS X, calling the API "Cocoa".
21 Since then, Cocoa has evolved beyond the OpenStep specification, and
22 GNUstep has followed it.
23
24 Thus, calling this port "OpenStep" is not technically accurate, and in
25 the absence of any other determinant, we are using the term
26 "Nextstep", both because it signifies the original inspiration that
27 created these APIs, and because all of the classes and functions still
28 begin with the letters "NS".
29
30 (See http://en.wikipedia.org/wiki/Nextstep)
31
32 This Emacs port was first released in the early 1990's on the NeXT
33 computer, and was successively updated to OpenStep, Rhapsody, OS X,
34 and then finally GNUstep, tracking GNU emacs core releases in the
35 meantime.
36
37
38 Release History
39 ---------------
40
41 1990-1992 1.0-3.0 (?) Michael Brouwer's socket/terminal communication
42 based version (GUI ran as a separate process.)
43
44 1993/10/25 3.0.1 Last (?) release of Brouwer version. Supports
45 NeXTstep 3.x and below.
46
47 1994/04/24 4.0 Carl Edman's version using direct API following
48 the X-Windows port. NeXTstep 3.x only.
49
50 1995/06/15 4.1 Second (and last) Carl Edman release, based on
51 Emacs 19.28.
52
53 1996/07/28 4.2 First Christian Limpach release, based on
54 Emacs 19.29.
55
56 ?? 5.0 ??
57
58 1997/12/?? 6.0b1 Ported to OpenStep by Scott Bender. Updated
59 to Emacs 20.2.
60
61 ?? 6.0b2 (?) Scott Bender: ported to Rhapsody.
62
63 1999/05/?? 6.0b3 Scott Bender: "OS X Server", Emacs 20.3.
64
65 2001/06/25 7.0 Ported to MacOS X (10.1) by Christophe de
66 Dinechin. Release based on Emacs 20.7. Hosting
67 moved to SourceForge.
68
69 2002/01/03 7.0.1 Bug fixes.
70
71 2002/08/27 7.0.2 Jaguar (OS X 10.2) support. Added an autoconf
72 option for sys_nerr being in stdio. Added
73 libncurses to the build libraries. Fixed a
74 problem with ns-alternate-is-meta. Changed the
75 icon color to blue, since Jaguar is yellow.
76
77 2004/10/07 8.0-pre1 Ported to GNUstep by Adrian Robert.
78
79 2004/11/04 8.0-pre2 Restored functionality on OS X (menu code
80 cleanup). Improved scrollbar handling and
81 paste from other applications. File icons
82 obtained properly from NSWorkspace. Dropped
83 Gorm and Nib files. Background refresh bug
84 fixed (in GNUstep). Various small fixes and
85 code cleanups. Now starts up under Art.
86
87 2005/01/27 8.0-pre3 Bold and italic faces supported. Cursor and
88 mouse highlighting rendering bugs
89 fixed. Drag/drop and cut/paste interaction
90 w/external apps fixed. File load/save panels
91 available. Stability and rendering speed
92 improvements. Some ObjC and VC mode bugs fixed.
93
94 2005/02/27 8.0-rc1 Dynamic path detection at startup so Emacs.app
95 can be moved anywhere. Added binary packages
96 and simplified source installation to running
97 two scripts. Thorough cleanup of menu code;
98 now fully functional. Fixed all detected
99 memory leaks. Minor frame focus and title
100 bugs fixed.
101
102 2005/03/30 8.0-rc2 "Configure" info directory now uses dynamic
103 path setting, so info files can go under .app.
104 Improved select() handling and PTY fixes so
105 shell mode and tramp run smoothly.
106 Significant rendering optimizations under
107 GNUstep, and now works under Art backend.
108 Non-Latin text rendering works (but not
109 fontsets), and LEIM is bundled. UTF8 is used
110 for clipboard interaction.
111 Arrow cursor now used on scrollbar.
112 objc-mode and tramp now bundled in site-lisp.
113
114 2005/05/30 8.0-rc3 Fixed bug with parsing of "easymenu" menus.
115 Many problems with modes such as SLIME, MatLab,
116 and Planner go away. Improved scrollbar
117 handling and rendering speed. Color panel
118 and other bug fixes. mac-fix-env utility.
119 Font handling improvements (OS X 10.3, 10.4):
120 - heed 'GSFontAntiAlias' default
121 - heed system antialiasing threshold
122 - added 'UseQuickdrawSmoothing' default to
123 invoke less heavy antialiasing
124
125 2005/07/05 8.0-rc4 Added a Preferences panel. Cleaned up
126 rendering for synthetic italic fonts. Further
127 improved menu parsing. Use system highlight
128 color. Added previous- and next-mark history
129 navigation commands bound to M-p,M-n.
130 Miscellaneous bug fixes.
131
132 2005/08/04 8.0-rc5 All internal string handling changed to UTF-8.
133 This means menu items, color and color list
134 names, and a few other things will now display
135 properly. It does NOT mean UTF-8 filenames
136 are displayed correctly in the minibuffer.
137 Also relating to UTF-8, contents of files
138 using this coding can now be displayed (though
139 not auto-recognized; add extensions to your
140 default coding alist). Limited mac-roman
141 support was also added (also sans recognition).
142 Certain characters are not displayed properly
143 due to a translation problem. (UTF-8 based on
144 work by Otfried Cheong; mac-roman from
145 emacs-21.) Partial support for "dead-key"
146 handling now added. Transparency (e.g., M-x
147 set-background-color ARGB88FFFFFF) improved:
148 only the background is made transparent.
149 Cursor drawing glitches fixed. Preferences
150 handling improved. Fixed some portability
151 problems on Tiger and Puma.
152
153 2005/09/12 8.0 Bundled ispell on OS X. Minor bug fixes and
154 stability improvements. Compiles under gcc-4.
155
156 2005/09/26 8.0.1 Correct clipped rendering for synthetic
157 italics. Include the info directory.
158 Fix grabenv. Bundle whitespace package.
159
160 2005/10/27 8.0.2 Correct rendering for wide characters during
161 cursor movement. Fix bungled hack in ispell
162 bundling.
163
164 2005/11/05 9.0-pre1 Updated to latest Emacs CVS code on unicode-2
165 branch (proposed to be released 2006/2007 as
166 Emacs 23).
167
168 2005/11/11 9.0-pre2 Fix crashes for deiconifying and loading
169 certain images. Improve vertical font metrics
170 (fixes inaccurate page up/down, window size,
171 and partial lines). Support better remapping
172 of Alt/Opt and remapping of Command. More
173 insistent defaulting of scrollbar to right.
174 Modest improvements to build process.
175
176 2006/04/22 9.0-pre2a Stopgap interim release to sync w/latest
177 unicode-2 CVS. Includes XPM and partial
178 toolbar support.
179
180 2006/06/08 9.0-pre3 Major upgrade to keyboard handling:
181 system-selected compositional input methods
182 should now work, as well as more keys /
183 keyboards. XPM, toolbar, and tooltip support.
184 Some improvements to scrollbars, zoom, italic
185 rendering, pasting, Color panel. Added function
186 ns-set-background-alpha to work around
187 inability to customize with numeric colors.
188
189 2006/12/24 9.0-rc1 Reworked font handling and text rendering to
190 use Kenichi Handa's new font back-end system.
191 Font sets are now supported and automatically
192 created when a font is selected. Added recent
193 X11 colors to Emacs.clr (remove
194 ~/Library/Colors/Emacs.clr to pick up). Added
195 ns-option-modifier, ns-control-modifier,
196 ns-function-modifier customization variables.
197 Update menus to Emacs 21+ conventions. Right
198 mouse button now generates mouse-3 events.
199 Various bug fixes and rendering improvements.
200
201 2007/09/10 9.0-rc2 Improve menubar, popup menu, and scrollbar
202 behavior, let accented char entry work in
203 isearch, follow system keymap for shortcut
204 keys, fix border and box drawing, remove
205 glitches in modeline drawing, support
206 overstrike for unavailable bold fonts, fix XPM
207 related crasher bugs. Incremental font
208 metrics caching and other performance
209 improvements. Shared-lisp builds now possible.
210
211 2007/09/20 9.0-rc2a Interim release. New features: composed
212 character display, colored fringe bitmaps,
213 colored relief drawing, dynamic resizing,
214 Bug fixes: popup menu position and selection,
215 font width calculation, face color adaptation
216 to background, submenu keyboard navigation.
217 NOT TESTED ON GNUSTEP.
218
219 2007/11/19 9.0-rc3 Integrated the multi-TTY functionality from
220 emacs core (however, mixed TTY and GUI
221 sessions are not working yet). Support 10.5.
222 Give site-lisp load precedence over lisp and
223 add a compile option to prefer an additional
224 directory, use miniaturized miniwindow images
225 in some cases, rename cursor types for
226 consistency w/other emacs terms, improved font
227 selection for symbol scripts.
228 Bug fixes: fringe and bitmap, frame deletion,
229 resizing, cursor blink, workspace open-file,
230 image backgrounds, toolbar item enablement,
231 context menu positioning.
232
233 2008/07/15 (none) Merge to GNU Emacs CVS trunk.
234
235
236 Contributors
237 ------------
238 In addition to the folks listed in etc/AUTHORS responsible for GNU Emacs
239 itself, the NeXTstep port owes to the following people:
240
241 Carl Edman
242 original author and maintainer, mainly UI
243 Michael Brouwer
244 heavy contributor, input handling and other areas
245 Christian Limpach
246 help / maintenance on NeXTstep
247 Scott Bender
248 OpenStep, Rhapsody ports
249 Christophe de Dinechin
250 MacOS X port
251 Adrian Robert
252 GNUstep port, update Emacs 20 -> 21+
253
254 Joe Reiss
255 popup menu, dialog boxes; icons
256 Andrew Athan
257 font panel integration
258 Scott Byer
259 improved rendering code
260 Scott Hess
261 keyboard handling suggestions
262
263 Rahul Abrol
264 "hide others" patch
265 Adam Ratcliffe
266 preferences panel documentation
267 Peter Dyballa
268 assistance with non-ASCII rendering and keyboard handling
269 David M. Cooke
270 fix to XPM crash bug
271 Carsten Bormann
272 initial patch and assistance getting dired working for non-ASCII filenames
273 Andrew Moore
274 assistance on ns-mark-nav extension
275
276 The GNUstep port was made possible through the assistance of Adam
277 Fedor, Fred Kiefer, M. Uli Klusterer, Alexander Malmberg, Jonas
278 Matton, and Riccardo Mottola. Leigh Smith maintained the SourceForge
279 project for a period.
280
281 Suggestions from Darcy Brockbank, Timothy Bissell, Scott Byer, David
282 Griffiths, Scott Hess, Eberhard Mandler, John C. Randolph, and Bradley
283 Taylor all helped things along at one point or another. Axel Seibert
284 and Paul J. Sanchez offered their time and machines to make a
285 binary release possible.
286
287 We would also like to thank a number of people who kept up the
288 constant supply of bug reports, suggested features and praise: Hardy
289 Mayer, Gisli Ottarsson, Anthony Heading, David Bau, Jamie Zawinski,
290 Martin Moncrieffe, Simson L. Garfinkel, Richard Stallman, Stephen
291 Anderson, Ivo Welch, Magnus Nordborg, Tom Epperly, Andreas Koenig,
292 Yves Arrouye, Anil Somayaji, Gregor Hoffleit; and the few hundred
293 other people on the mailing list from whom we didn't hear much, but
294 the presence of which assured us that maybe this project was actually
295 worth doing.
296
297 \f
298 This file is part of GNU Emacs.
299
300 GNU Emacs is free software: you can redistribute it and/or modify
301 it under the terms of the GNU General Public License as published by
302 the Free Software Foundation, either version 3 of the License, or
303 (at your option) any later version.
304
305 GNU Emacs is distributed in the hope that it will be useful,
306 but WITHOUT ANY WARRANTY; without even the implied warranty of
307 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
308 GNU General Public License for more details.
309
310 You should have received a copy of the GNU General Public License
311 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.