summaryrefslogtreecommitdiff
path: root/X11R5.mdwn
blob: 42fe3f72467b2e0f808e5cf73b452fb3e30d7501 (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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
<div itemscope itemtype="http://schema.org/SoftwareApplication">

# <span itemprop="name">X Window System</span>, <span itemprop="version">Version 11, Release 5</span>

<span itemprop="description">
X11R5 was the fifth release of the X Window System, Version 11 from MIT.
</span>
It was released in
<span itemprop="datePublished" content="1991-09-05">September 1991</span>,
with the following changes excerpted from the
<a href="http://www.x.org/releases/X11R5/RELNOTES.TXT" itemprop="releaseNotes">release notes</a>.
The sources are available for download for historical reference from
<a href="http://www.x.org/releases/X11R5/" itemprop="downloadUrl">http://www.x.org/releases/X11R5/</a>.

[[!toc levels=4 startlevel=2]]

## New standards

The following standards are new in Release 5:

### X Font Service Protocol
Instead of forcing each X server to read all fonts from the
filesystem, the X Font Server Protocol makes it
possible to manage fonts separately from the X server, directing the X
server to request fonts via this new Consortium standard network protocol from
a font server.

In addition, for fonts which take a long time to
open, this allows the X server to continue with other clients while
the font server services the font requests.

### XLFD changes for scalable fonts
The X Logical Font Description standard has been compatibly enhanced
to allow clients to specify and use scalable fonts.

### X Input Device Extension
This extension has been promoted from Draft Standard to full
Consortium Standard with this release.

### Inter-Client Communications Conventions
This standard has been updated to cover the new X Device Color
Characterization Conventions for device-independent color support in Xlib.

## General

We have tried hard with this release to make our code use standard
features from POSIX.1 and ANSI C when possible.  A new include file
`<X11/Xosdefs.h>` describes which systems comply or do not comply with
these standards.

Two new X authorization schemes are included, a DES based private-key system
which was described in the R4 XDMCP document - XDM-AUTHORIZATION-1 (along
with the associated XDMCP authentication system XDM-AUTHENTICATION-1) and
the Sun Secure RPC based SUN-DES-1 system, which uses the SunOS supplied
security system.

## Clients

Most clients participate in the WM_DELETE_WINDOW protocol.

* New clients: *editres*, *viewres*, *xconsole*, *xcmsdb*.
* New demos: *beach_ball*, *auto_box*, *gpc*, *xcmstest*, *xgas*, *x11perf*.
* *Xlswins* has been removed; it is replaced by *xwininfo -tree*.
* Moved to contrib: *muncher*, *plaid*.
* Completely new implementation: *bitmap* and *xmag*.

Other changes of note:
### editres
*Editres* is a tool that allows users and application developers to view
the full widget hierarchy of any X Toolkit client that speaks the
Editres protocol.  In addition *editres* will help the user construct
resource specifications, allow the user to apply the resource to
the application and view the results dynamically.  Once the user is
happy with a resource specification, editres will append the resource
string to the user's resources file.
### xdm
*Xdm* can now display a menu of hosts for XDMCP-capable terminals using the
new *chooser* client.  This is useful for X terminals that
do not themselves offer such a menu.

XDMCP works with STREAMS.

A new setup program is invoked by *xdm* prior to putting up the
login window; this program can be used to run *xsetroot*, *xcmsdb*,
and do any other custom initialization required.
### xterm
Cuts of wrapped lines are now treated as a single line.
Cuts of multi-page regions now work and highlight correctly.
Pasting large amounts of data into *xterm* now works (on systems with
properly-working pty implementations).
New arguments have been added to the send-signal action: quit, alarm.
The *titeInibit* resource has been modified to also inhibit
the escape sequence
which switches to the alternate screen.
Two new items have been added to the VT Fonts menu:
5x7 (Tiny) and 10x20 (Huge).
The following resources have been added: *resizeGravity*,
*bellSuppressTime*,
*appcursorDefault*, *appkeypadDefault*,
*ginTerminator*, *autoWrap*.
The <i>Xterm Control Sequences</i> document is up to date.
*Xterm* is installed securely when made setuid on SunOS 4.1.1
with shared libraries.
### xmh
*Xmh* now uses the *MH* environment variable, if set.
*Xmh* now supports checking for mail in multiple maildrops.
Enhanced participation in WM_PROTOCOLS has been added.
New resources have been added, including:
*checkpointInterval*,
*checkpointNameFormat*,
*mailInterval*,
*rescanInterval*, *showOnInc*, *noMailBitmap*,
*newMailBitmap*, *newMailIconBitmap*, and *noMailIconBitmap*.
New actions have been added:
XmhWMProtocols, XmhShellCommand, XmhCheckForNewMail,
XmhViewMarkDelete.
Better recovery from unexpected inconsistencies with the filesystem
has been implemented.
Better POP support has been added.
See the file `mit/clients/xmh/CHANGES` for more details.
### oclock
*Oclock* has a new *-transparent* option.
### xload
*Xload* is secure on SunOS 4.1.1 with shared libraries.
### xditview
*Xditview* now supports *pic*, scalable fonts, settable
device resolution, and has a better user interface.

## Libraries in General

All of the useful libraries now use function prototypes by default for
systems which support them.
SunOS shared libraries now use much less swap space than in R4.
In addition, System V Release 4 and AIX 3.1 shared libraries are also
supported now.  Configuring new shared library systems should be much
easier than before.

## Xlib

Two new major pieces of functionality have been added to Xlib:
device independent color, and internationalization (i18n).
In addition, a few other additions and improvements have been made.

### Xlib Manual

The Xlib manual has been reorganized for Release 5.
Unfortunately, this may cause considerable confusion for a while
when people quote section numbers without reference to the release.
However, we feel that the new organization is a considerable improvement.

### Device-independent Color

The *Xcms* (X Color Management System) functions in Xlib
support device-independent color spaces derivable from the CIE XYZ
color space.
This includes the CIE XYZ, xyY, L\*u\*v\*, and L\*a\*b\* color spaces as well as
the TekHVC color space.
In addition, linear RGB intensity value space has been added, as
well as gamma correction for device RGB values,
and a uniform syntax has been adopted for specifying colors in strings.
Xlib now supports client-side color name databases, and the
existing Xlib functions that use color names (e.g.,
*XLookupColor* and *XAllocNamedColor*) now handle all
color spaces, so that the contrivance of using *XParseColor*
followed by *XAllocColor* is no longer necessary.
Xlib provides direct programming interfaces for dealing with color
values in different spaces, and for converting between spaces.
New device-independent color spaces can also be added.
For details on the new color functionality, read Chapter 6 of
the new Xlib manual.

Monitors are characterized by data stored on root window properties;
the new *xcmsdb* program can be used to set these properties.
Unfortunately, you need a color analyzer instrument to generate
characterizations; choosing a random one will almost certainly
produce inaccurate colors.  However, you will find some sample
database files in `mit/clients/xcmsdb/datafiles` and in
`contrib/clients/ca100/monitors`.

### Internationalization

An internationalized application is one which is adaptable to the requirements
of different native languages, local customs, and character string encodings.
The process of adapting the operation to a particular native language,
local custom, or string encoding is called localizaton.
A goal of internationalization is to permit localization
without program source modifications or recompilation.

Internationalization in Xlib is based on the concept of a <i>locale</i>.
A locale defines the &ldquo;localized&rdquo; behavior of a program at run-time.
Locales affect Xlib in its:

 * Encoding and processing of input method text
 * Encoding of resource files and values
 * Encoding and imaging of text strings
 * Encoding and decoding for inter-client text communication

Characters from various languages are represented in a computer
using an encoding.
Different languages have different encodings,
and there are even different encodings for the same characters
in the same language.

Xlib provides support for localized text imaging and text input.
Sets of functions are provided for multibyte (char\&*) text as well as
wide character (*wchar_t*) text in the form supported
by the host C language environment.
For details on the new internationalization functionality,
read Chapter 13 of the new Xlib manual.

Two sample implementations of the internationalization mechanisms
exist in this release, one called *Xsi* and one called *Ximp*.
You will find documentation for them in `mit/doc/I18N` and
`contrib/im`, and locale definition files in `mit/lib/nls`.
In `contrib/im` you will also find network-based
Input Method servers.

Unfortunately, none of the programs in the MIT software use the new
internationalization facilities.  However, you will find some sample
clients in `contrib/im`, and internationalized versions of some
of the MIT clients in `contrib/clients`.

### Keysyms

By default a database of all registered vendor-private keysyms
gets installed, so that Xlib can map between keysym values and names.

### Resource Databases

A new SCREEN_RESOURCES property has been defined, permitting
screen-specific resources to be set, so that (for example)
colors can be specified for a color screen and not effect
a monochrome screen on the same server.  The *xrdb* program
has been enhanced to &ldquo;do the right thing&rdquo; automatically
in most cases.

New functions have been defined to merge a resource database
directly from a file, and to combine two databases with either
&ldquo;augment&rdquo; or &ldquo;override&rdquo; semantics.

A &ldquo;#include&rdquo; syntax is now supported in resource files.
A specific example of using this is to have a customized
app-defaults file (in an Xt application) include the base
app-defaults file.

A new reserved component name, &ldquo;?&rdquo;, has been defined
that matches a single level in the resource hierarchy.
This makes it easier to override resources specified in
app-defaults files.

A new function, *XrmEnumerateDatabase*, has been defined
to search for matching entries in a resource database.
The *appres* program has been enhanced in this release
to become a convenient interface to this function.

A new function, *XrmPermStringToQuark*, has been
introduced to avoid having Xlib allocate needless storage
for constant strings.

### Extensions

A new function has been added to permit an extension to convert
errors with additional data into Xlib format, and one has been
added to permit an extension to print out the values in an
error handler.

### Miscellaneous

A new type *XPointer* has been introduced, replacing
uses of the non-standard type *caddr_t*.  Old programs
using *caddr_t* will still work, of course.

### Performance

The new color and internationalization facilities have the unfortunate
effect of making executables quite a bit larger on systems that do
not have shared libraries.

The resource database functions have been completely rewritten for
this release.  Databases should be significantly smaller in memory,
and loading and parsing resources should be faster.

## Xt Intrinsics

At the data structure level, Release 5 retains complete binary
compatibility with Release 4.  The specification of the
*ObjectPart*,
*RectObjPart*,
*CorePart*,
*CompositePart*,
*ShellPart*,
*WMShellPart*,
*TopLevelShellPart*,
and
*ApplicationShellPart*
instance records was made less strict to permit implementations to
add internal fields to these structures.  Any implementation that
chooses to do so would, of course, force a recompilation.
The Xlib specification for
*XrmValue*
and
*XrmOptionDescRec*
was updated to use a new type,
*XPointer*,
for the <i>addr</i> and <i>value</i> fields respectively, to avoid
ANSI C conformance problems.  The definition of
*XPointer*
is binary compatible with the previous implementation.

### baseTranslations Resource

A new pseudo-resource, *XtNbaseTranslations*, was defined to permit
application developers to specify translation tables in application
defaults files while still giving end users the ability to augment
or override individual event sequences.  This change will affect
only those applications that wish to take advantage of the new
functionality, or those widgets that may have previously defined
a resource named &ldquo;baseTranslations&rdquo;.

Applications wishing to take advantage of the new functionality
would change their application defaults file, e.g., from

<code>
  app.widget.translations: <i>value</i>
</code>

to

<code>
  app.widget.baseTranslations: <i>value</i>
</code>

If it is important to the application to preserve complete
compatibility of the defaults file between different versions
of the application running under Release 4 and Release 5,
the full translations can be replicated in both the &ldquo;translations&rdquo;
and the &ldquo;baseTranslations&rdquo; resource.

### Resource File Search Path

The current specification allows implementations greater flexibility
in defining the directory structure used to hold the application class
and per-user application defaults files.  Previous specifications
required the substitution strings to appear in the default path in a
certain order, preventing sites from collecting all the files for
a specific application together in one directory.  The Release 5
specification allows the default path to specify the substitution
strings in any order within a single path entry.  Users will need to
pay close attention to the documentation for the specific
implementation to know where to find these files and how to specify
their own
*XFILESEARCHPATH*
and
*XUSERFILESEARCHPATH*
values when overriding the system defaults.

### Customization Resource

*XtResolvePathname*
supports a new substitution string, %C, for specifying separate
application class resource files according to arbitrary user-specified
categories.  The primary motivation for this addition was separate
monochrome and color application class defaults files.  The
substitution value is obtained by querying the current resource
database for the application resource name &ldquo;customization&rdquo;, class
&ldquo;Customization&rdquo;.  Any application that previously used this
resource name and class will need to be aware of the possibly
conflicting semantics.

### Per-Screen Resource Database

To allow a user to specify separate preferences for each screen of a
display, a per-screen resource specification string has been added and
multiple resource databases are created; one for each screen.  This
will affect any application that modified the (formerly unique)
resource database associated with the display subsequent to the Intrinsics
database initialization.  Such applications will need to be aware
of the particular screen on which each shell widget is to be created.

Although the wording of the specification changed substantially in the
description of the process by which the resource database(s) is
initialized, the net effect is the same as in prior releases with the
exception of the added per-screen resource specification and the new
customization substitution string in
*XtResolvePathname*.

### Internationalization of Applications

Internationalization as defined by ANSI is a technology that
allows support of an application in a single locale.  In
adding support for internationalization to the Intrinsics
the restrictions of this model have been followed.
In particular, the new Intrinsics interfaces are designed to not
preclude an application from using other alternatives.
For this reason, no Intrinsics routine makes a call to establish the
locale.   However, a convenience routine to establish the
locale at initialize time has been provided, in the form
of a default procedure that must be explicitly installed
if the application desires ANSI C locale behavior.

As many objects in X, particularly resource databases, now inherit
the global locale when they are created, applications wishing to use
the ANSI C locale model should use the new function
*XtSetLanguageProc*
to do so.

The internationalization additions also define event filters
as a part of the Xlib Input Method specifications.  The
Intrinsics enable the use of event filters through additions to
*XtDispatchEvent*.
Applications that may not be dispatching all events through
*XtDispatchEvent*
should be reviewed in the context of this new input method mechanism.

In order to permit internationalization of error messages the name
and path of the error database file is now allowed to be implementation
dependent.  No adequate standard mechanism has yet been suggested to
allow the Intrinsics to locate the database from localization information
supplied by the client.

The previous specification for the syntax of the language string
specified by
*xnlLanguage*
has been dropped to avoid potential conflicts with other standards.
The language string syntax is now implementation-defined.
The example syntax cited is consistent with the previous
specification.

### Permanently Allocated Strings

In order to permit additional memory savings, an Xlib interface was
added to allow the resource manager to avoid copying certain string
constants.  The Intrinsics specification was updated to explicitly require
the Object <i>class_name</i>, <i>resource_name</i>, <i>resource_class</i>,
<i>resource_type</i>, <i>default_type</i> in resource tables, Core <i>actions</i>
<i>string</i> field, and Constraint <i>resource_name</i>, <i>resource_class</i>,
<i>resource_type</i>, and <i>default_type</i> resource fields to be
permanently allocated.  This explicit requirement is expected to
affect only applications that may create and destroy classes
on the fly.

### Arguments to Existing Functions

The <i>args</i> argument to
*XtAppInitialize*,
*XtVaAppInitialize*,
*XtOpenDisplay*,
*XtDisplayInitialize*,
and
*XtInitialize*
were changed from
*Cardinal\**
to int\* to conform to pre-existing convention and avoid otherwise
annoying typecasting in ANSI C environments.

### Implementation

Function prototypes are now fully supported in the header files.

`<X11/Intrinsic.h>` no longer includes `*lt;X11/Xos.h>` by default.
Inclusion of this file was a bug in earlier releases.  If you have
old code that depends on this bug, you can define `-DXT_BC` when you compile
to get back the old behaviour.

String constants are now defined in a single array, saving memory and external
symbols.  Note that because the new implementation uses #defines, string
constants in widget header files which duplicate a constant defined by Xt
should either be removed or protected from a collision.

The translation manager facilities have been completely reimplemented
in this release, resulting in substantially less memory consumed by
some applications.
A number of other memory-saving changes have been implemented, and
in a few cases execution time should be faster.

The default keycode to keysym translator deals with all Latin keysyms.

### Extension Events

Unfortunately, the Xt standard as of R5 still does not address the
issues of integrating events from protocol extensions into the
normal Xt dispatch mechanism.  The adventurous will find a set
of patches to Xt in `contrib/lib/Xt` that attempt to address
this problem.  These patches are non-standard, experimental,
subject to change, not guaranteed, may adversely affect your ability to
apply public patches from MIT, and have not reviewed by the X Consortium.

## PEX

The PEX Sample Implementation (SI) is composed of several parts. The
major components are the extension to the X Server, which implements
the PEX protocol, and the client side Application Protocol Interface (API),
which provides a mechanism by which clients can generate PEX protocol.
The API provided with the PEX-SI is the ISO IS PHIGS Binding and the
yet to be standardized PHIGS PLUS Binding.

In addition to these major components, several other minor components are
provided.  These include documentation, 3D fonts for PEX, demos, and
a verification suite called InsPEX.  Also provided in `contrib`
are additional example programs and demos.

These elements are located in the following area:

The PEX server extension is located in the directories under
`mit/extensions/server/PEX`.  Device independent portions are located
in `mit/extensions/server/PEX/dipex`.  Device dependent functionality
appears in `mit/extensions/server/PEX/ddpex`.  Operating system font
dependent code appears in `mit/extensions/server/PEX/ospex`.  General
purpose server include files are in `mit/extensions/server/PEX/include`.

The API code is located under the directory `mit/extensions/lib/PEX`.
The PHIGS/PHIGS PLUS Binding routines are in the `c_binding` subdirectory.
The PHIGS Monitor (PM), a separate process started at client runtime
to handle PHIGS Input functionality, is in the `cp` subdirectory.
Other code located in the various subdirectories handles PHIGS archival,
error handling, and comprises the internal library level that PHIGS calls
to generate the PEX Protocol.

All PEX documentation is located in the directory `mit/doc/extensions/PEX`,
with pregenerated PostScript files in `mit/hardcopy/extensions/PEX`.
The PEX Protocol Specification itself is in the `Proto` subdirectory.  All
SI documentation is in the `SI` subdirectory.  Three subdirectories there
contain an Architecture Specification, a Porting Guide (with implementation
details), and a User's Guide.  The sources and programs used to generate
these files are located in the `mit/doc/extensions/PEX/SI` directory.
Also located there is the `PHIGS` subdirectory which contains PHIGS man
pages and macros for printing these pages.

Font source for PEX and utilities to build them are located in the directory
`mit/fonts/PEX`.  Two stroke fonts are supplied.

The PEX verification tool InsPEX can be found in the
`mit/extensions/test/InsPEX` directory.
Shell scripts are provided there to run InsPEX.
More information on InsPEX is available in the User's Guide.

Demos for PEX can be found in the `mit/demos` directory.
Two demos and the
NCGA Graphics Performance Characterization (GPC) Suite can be found
there.  The demos are in the `mit/demos/auto_box` and
`mit/demos/beach_ball` directories, and are named *auto_box*
and *beach_ball* respectively.
The GPC suite is found in `mit/demos/gpc`.
This suite consists of demos (in the `objects` subdirectory),
benchmarks (various directories below `benchmarks`) and tests
(in `tests`).  For more information on how to run these demos see the
User's Guide.

There are also several unsupported demos and examples available in
`contrib`.  In `contrib/demos/beach_ball2` a newer version
of the *beach_ball* demo with enhanced functionality can be found.
In `contrib/examples/PEX` various PHIGS based clients that
demonstrate how to use PEX via the PHIGS API are available.

### Standards and Functionality

This release conforms to the PEX Protocol Specification V5.0P.
The release comes with 2 fonts, Roman and Roman_M (see the User's Guide for
more details).  It implements the minimum required HLHSR (Hidden Line/
Hidden Surface Removal) for PHIGS compliance (i.e., NONE).  The release
only supports 8-bit color.

The API binding has been updated to the ISO IS PHIGS binding.
The directory `mit/util/PEX` contains `sed` scripts for
converting programs
from the previous binding to the new binding.  These scripts do most of
the work, but some manual editing is still needed.  There is a *README*
file in this directory with notes and information.

The PHIGS Binding provides most PHIGS/PHIGS PLUS functionality.  The full
PHIGS Input Model (Valuator, Locator, Stroke, Choice, String, Pick)
is implemented in a device independent manner using the Athena Widget Set.
PHIGS/PHIGS PLUS functionality includes, but is not limited to the following
graphical primitives:  Polylines, Polymarkers, Fill Areas, Triangle Strips,
NURBS Curves and Surfaces, 2D and 3D Text.  Other operations include
Depth Cueing, Modelling Clip, Backface removal, Lighting Models and
Surface Reflection.

Functionality not completed in this release is as follows:

In the API:

 * Mapping of PHIGS font ids to PEX fonts

In the Server:

 * Backface Attributes and Distinguish Flag
 * Font sharing between clients
 * Patterns, Hatches and associated attributes
 * Color Interpolation
 * Transparency
 * Depth Cueing for Markers
 * Z-buffering
 * Double Buffering


In InsPEX:

 * Completion of port to ISO IS PHIGS Binding

### PEX and PHIGS Documents

The following documents are provided with this release:

 * PEX-SI User Guide
 * PEX-SI Graphics Library Manual Pages
 * PEX-SI Architecture Specification
 * PEX-SI Porting Guide


They are located in subdirectories of `mit/doc/extensions/PEX`.
Please read the PEX-SI User's Guide for descriptions of the documents and
how to use them.  Instructions for printing the documents are provided
in a README file in each of the document directories.

The User's Guide is provided as a starting point in the documentation.
It describes the various documents provided with the release, and includes
instructions on using the clients, the API and the server code.
It also includes specifications for the server functionality and archive
format.

The Graphics Library Manual Pages are for the client-side library,
written to the ISO IS binding.

The Architecture Specification describes the PEX-SI architecture
at a high level.

The Porting Guide is intended as an extension to the Architecture
Specification.  There is a lot of good information in this document,
and it is organized fairly well, but it lacks some polish.  It is not a
complete document.

### InsPEX

This release of InsPEX includes coverage of all the PHIGS PLUS graphics
primitives, such as fill area sets with data, quadrilateral meshes,
triangle strips, and NURBS.  PHIGS PLUS attributes such as direct color
specification, depth cuing, and lighting are also exercised.

The testing of input is somewhat limited by the problem of simulating
mouse and keyboard input in a reliable and portable fashion.  For the
pick, locator, and stroke devices, simulating the mouse events is
straightforward, but since the string, valuator, and choice devices
are built upon a toolkit (Athena Widgets in the PEX-SI's case), getting
window id's for the appropriate windows and sending mouse
clicks to the right place on those windows is more difficult,
and probably impossible to do in a way that could be quickly
ported to another toolkit along with these input devices.
The technology for automatic testing of software using
a graphical user interface under X has not progressed to the
point where this functionality could be tested in a way
that would be useful to all the potential users of InsPEX.

For nearly all of the tests that use image comparison
to verify graphical output, reference images have been supplied.
Due to outstanding bugs in the code, however, some tests are shipped without
reference images.  Also, since back-facing attributes are not implemented,
the images saved for these tests are actually incorrect.  These have been
shipped, however, because they still can be helpful to someone porting
the PEX-SI.  It should be expected that when backfacing attributes are
implemented, these tests will fail and image comparison will be required.

Along with the *README* in the main InsPEX directory, there is a sample
log file, sample.log, and an automatically-generated summary of all the
current tests, `test_descrip`.  See the *README* for a description
of how that file was generated.

## Athena Widget Set

Many minor bugs have been fixed.
The Xaw examples have been moved to `contrib`.
However, please note that the Athena Widgets have been and continue
to be low on our priority list, so many bugs remain (particularly
in the Text widget) and many requests for enhancements have not
been implemented.  Because some incompatible
changes have been made, the shared library major version number on
Suns has been incremented.

### Header Files
Function prototypes have been added to the public interfaces.

### AsciiSrc
No warning message is printed when the file cannot be
written to; the return value should be enough info.
*GetValues* on the string resource was failing when
"useStringInPlace" was set to true; fixed.
A memory leak when freeing pieces in a source of type "ascii String"
has been plugged.
The buffer is now updated whenever the "string" resource is set using
*XtSetValues*.  If the type is file then the file is read in again.

### Box
`Box.h` now includes `<X11/Xmu/Converters.h>` for the
orientation resources.

### Clock
Changed to be a subclass of *Simple* instead of *Core*.

### Command
A bug in changing the shape style back to Rectangular has been fixed.

### Dialog
The Icon resource type has changed from *Pixmap* to *Bitmap*.

### Form
The geometry handler now will now disallow geometry management
requests that will force the child outside the *Form*'s window.
EdgeType names have been changed to have prefix &ldquo;Xaw&rdquo; instead of &ldquo;Xt&rdquo;, but
the old definitions are still around with a #define.
The string-to-widget converter no longer caches resources.

### Logo
Changed to be a subclass of *Simple* instead of *Core*.
Reverse video now works correctly.

### Mailbox
Changed to be a subclass of *Simple* instead of *Core*.
Reverse video now works correctly.

### MenuButton
The *MenuButton* widget no longer places a server grab on itself.
Instead, *PopupMenu* is registered as a grab action.  As a result
of this, clients which popped up menus without using *XtMenuPopup*
or *MenuPopup* or *PopupMenu* in the menu button translations will
fail to have a grab active.  They should make a call to
*XtRegisterGrabAction* on the appropriate action in the application
initialization routine, or use a different translation.

### Paned
`Paned.h` now includes `<X11/Xmu/Converters.h>` for the
orientation resources.

### Panner
This widget is new in R5, see the Xaw manual for details.

### Porthole
This widget is new in R5, see the Xaw manual for details.

### Repeater
This widget is new in R5, see the Xaw manual for details.

### Scrollbar
Changed to be a subclass of *Simple* instead of *Core*.
The type of thumb resource has changes from *Pixmap* to *Bitmap*.
However, if applications provide the resource conversion, the
*SetValues* method can still handle pixmaps of correct depth.

### Simple
A color cursor converter has been added, as well as the new
new resource types: *XtNpointerColor*,
*XtNpointerColorBackground*, and *XtNcursorName*.

### SmeBSB
The Right bitmaps are now painted in the correct location.
Right and Left Bitmaps can be specified in resource files, and
at startup time.

### Text
If there is no current selection the the selection extends
from the insert point, rather than some random location.
Forward (Backward) Paragraph works at the paragraph boundaries now.
Selecting a word now transitions correctly at both end points.
An infinite loop when using fill paragraph in a read only text widget
has been found and fixed.
When the "resize" resource is set the text will start up with
exactly enough space to contain the text in the widget.
A bug that could cause an infinite loop when Meta-Q was used
to invoke the form-paragraph function on a read-only text widget has
been fixed.
Problems dealing with exposure events have been fixed.
In `TextP.h`, the names of the following symbolic constants
have each had the prefix Xaw added to them:
*XawLF*, *XawCR*, *XawTAB*, *XawBS*, *XawSP*,
*XawDEL*, and *XawBSLASH*.

### Toggle
The widget state is preserved across changes in sensitivity.
A string-to-widget converter is registered for radio groups.

### Tree
This widget is new in R5, see the Xaw manual for details.

### Paned
A bug that caused *XtGeometryYes* returns to have bogus values,
and caused panes to get random sizes, has been fixed.

### Vendor
Support has been added for the *editres* protocol.
All applications using the Athena Widgets are automatically
editable with *editres*.
A bug that cause *Shell* to ignore all but first child has been fixed.

### Viewport
*XawPannerReport* support has been added.

## X Server

Considerably more work speeding up the server has been done,
particularly in the `cfb` and `mfb` code.
The font interfaces are completely new.
Compressed fonts are not supported in the release.
Other changes are documented in `mit/doc/Server/r5.tbl.ms`.

## Fonts

### Font Server
A sample implementation of the server side of the X Font Service Protocol
is provided in a new program, *fs*.
On the Macintosh, a special version of the server called *MacFS*
can be used to serve TrueType fonts.

### New Font Format
Both the X server and the font server use a
new font format, <i>pcf</i> (portable compiled font).
Pcf is readable across different machines and contains more information
about a font than the old snf format.  Fonts in snf format can still
be used.

### Font Applications
The following new utilities talk to the font server:
*fsinfo*, *fslsfonts*, *fstobdf*, and *showfont*.
To build pcf fonts, *bdftosnf* has been replaced by *bdftopcf*.

### Scalable Fonts
Bitstream, Inc. has donated an outline scaling engine along with
a set of sample fonts, matching the donated bitmap fonts included with
Release 4.  In addition, a usable (but not very pretty) bitmap scaling
engine has been implemented which
allows the use of all other fonts at arbitrary point sizes.

### Font Changes
Many *misc* fonts now have ISO Latin-1 upper half characters and
some tuning.
The following sets of fonts are new:
Latin/Hebrew in ISO8859-8 encoding,
Kanji in JISX0208.1983-0 encoding,
Hangul in KSC5601.1987-0 encoding.

The JIS Kanji fonts were purchased on behalf of the MIT X Consortium
from the Japanese Standards Association, 1-24, Akasaka 4,
Minato-ku, Tokyo 107, Japan.  They were converted to BDF format,
keeping within the JIS rules.  In keeping with
JIS rules, these fonts should not be transformed into other encodings, they
should only be used in the JISX0208.1983-0 encoding.  It is also strongly
recommended that companies wishing to use these fonts in commercial products
should purchase the original JIS font standards directly from JSA.  The
purchase price is nominal.

## Acknowledgements

The MIT Release 5 distribution is brought to you by the MIT X Consortium.
A cast of thousands, literally, have made this release possible.
We cannot possibly acknowledge them all here.
The names of all people who made it a reality will be found in the
individual documents and source files.
We greatly appreciate the work that everyone has put into this release.

Hoping you enjoy Release 5,

* Donna Converse
* Stephen Gildea
* Susan Hardy
* Jay Hersh
* Keith Packard
* David Sternlicht
* Bob Scheifler
* Ralph Swick

(R5 Survival Club)

<div style="font-size: small; border-top: 1px solid black;">
<p>
Copyright &copy; <span itemprop="copyrightYear">1991</span> by the
<span itemprop="copyrightHolder"
 itemscope itemtype="http://www.schema.org/Organization">
<span itemprop="name">Massachusetts Institute of Technology</span>
</span>.
</p><p>
Permission to use, copy, modify, and distribute this document for  any  purpose
and without fee is hereby granted, provided that the above copyright notice and
this permission notice appear in all copies, and that the name of  MIT  not  be
used  in advertising or publicity pertaining to this document without specific,
written prior permission.  MIT makes no representations about  the  suitability
of  this document for any purpose.  It is provided &ldquo;as is&rdquo; without express or
implied warranty.
</p>
</div>
</div>