20011003.ms 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. .TL
  2. Inferno 3rd Edition \- 3 October 2001 Update
  3. .br
  4. Release Notes
  5. .AI
  6. Vita Nuova
  7. support@vitanuova.com
  8. .br
  9. 3 October 2001
  10. .SP 4
  11. .NH 1
  12. Contents
  13. .LP
  14. This set of updates applies to the 18 June 2001 base.
  15. The installed software must therefore be that of 18 June 2001, whether installed directly,
  16. or the result of updating the original July 2000 release with update packages.
  17. .LP
  18. This update offers the following, compared to the June 2001 release.
  19. .SH
  20. .I "Repairs and changes"
  21. .IP \(bu
  22. Various minor bug fixes and improvements appear here and there.
  23. They include corrected usage messages, status returned to the shell on error,
  24. diagnosing failures to load library modules,
  25. and use of the
  26. .CW %r
  27. format to improve diagnostics.
  28. Many
  29. .I wm
  30. applications adjust their display to suit small screens (eg, on the Compaq iPAQ);
  31. currently the applications do some of the work themselves but it will soon be automatic.
  32. Other changes are listed below.
  33. .IP \(bu
  34. .I Date (1)
  35. takes the options
  36. .CW -u
  37. (show UTC/GMT)
  38. and
  39. .CW -n
  40. (print time as a number).
  41. If given a number of seconds as its argument,
  42. .I date
  43. takes that as the time to convert.
  44. .IP \(bu
  45. .I Format (8)
  46. supports tiny partitions.
  47. .IP \(bu
  48. .CW /appl/env.b
  49. uses
  50. .I env (2)
  51. to access environment variables.
  52. .IP \(bu
  53. For packages created after Saturday 8 September 2001,
  54. .CW install/create
  55. converts the leading
  56. .CW 10
  57. to the letter
  58. .CW A
  59. so that the names of update files remain in sorted order.
  60. .IP \(bu
  61. .CW install/inst
  62. takes a
  63. .CW -c
  64. option to cause it to carry on even if some files or directories cannot be made or updated.
  65. (This option is intended for special applications and should not generally be used when applying system updates.)
  66. .IP \(bu
  67. .CW install/install
  68. takes a
  69. .CW -P
  70. option that lists the packages to install.
  71. The
  72. .CW -g
  73. option causes
  74. .CW install
  75. to install all available packages.
  76. .IP \(bu
  77. The installation software regards files that have had carriage returns inserted
  78. before newlines as identical to the original files when deciding when files
  79. have been modified locally.
  80. .IP \(bu
  81. The
  82. .CW wm
  83. applications now check the whole string received on the window
  84. control channel returned by
  85. .I wmlib (2)'s
  86. .CW titlebar,
  87. not just an initial letter;
  88. in particular, they check for
  89. .CW "exit"
  90. not just
  91. .CW 'e' .
  92. .IP \(bu
  93. .I Wm (1)
  94. takes the option
  95. .CW -s
  96. to suppress the start menu.
  97. .IP \(bu
  98. .I Keyring-gensk (2)
  99. and
  100. .I createsignerkey (8)
  101. provide experimental support for the RSA algorithm for signatures instead
  102. of the default El-Gamal algorithm;
  103. .CW /keyring/rsaalg.c
  104. is new.
  105. .IP \(bu
  106. .CW /keyring/egalg.c
  107. uses the correct structure for Public keys.
  108. .IP \(bu
  109. .I Listen (1)
  110. has a new option
  111. .CW -i
  112. that takes a shell command for each listener to run to set up appropriate
  113. context (eg, name space) before listening for incoming calls.
  114. .IP \(bu
  115. .I man (1)
  116. allows non-numerics in section names.
  117. .IP \(bu
  118. .CW /appl/cmd/mkfile
  119. now includes
  120. .CW /mkfiles/mksubdirs
  121. and has acquired the list of
  122. .CW cmd
  123. subdirectories from
  124. .CW /appl/mkfile .
  125. .IP \(bu
  126. .I Puttar
  127. gives warnings not fatal errors when files or directories cannot be found.
  128. .IP \(bu
  129. .I sh-expr (1)
  130. implements the
  131. .CW !=
  132. operator.
  133. .IP \(bu
  134. .I Tail (1)
  135. no longer gives an array bound error when a binary file does not end with a newline.
  136. .IP \(bu
  137. .CW tiny/sh
  138. does not break when
  139. .I filepat (2)
  140. is not available.
  141. .IP \(bu
  142. .I Webgrab (1)
  143. has several repairs to its HTTP protocol implementation, making it work with multi-homed servers.
  144. .IP \(bu
  145. .CW wm/sendmail
  146. no longer fails to save messages when requested(!).
  147. .IP \(bu
  148. .I Arg (2)
  149. allows re-use by ensuring that its globals are reinitialised by its
  150. .CW init
  151. function.
  152. .IP \(bu
  153. .I Bufio (2)
  154. correctly implements relative seek.
  155. .IP \(bu
  156. .I Convcs (2)
  157. provides several more character sets.
  158. .IP \(bu
  159. .I Cs (8)
  160. does not complain if it is already running, suppressing a previously confusing diagnostic.
  161. .IP \(bu
  162. .CW lib/deflate
  163. no longer fails on the output of some PC versions of
  164. .I gzip .
  165. .IP \(bu
  166. .I Wmlib (2)
  167. adapts a little better to different font and screen sizes (though more remains to be done);
  168. on small screens, defined as those less than 480 pixels wide,
  169. .I wm (1)
  170. puts all windows at the screen origin by default.
  171. .SH
  172. .I "Interface changes and extensions"
  173. .IP \(bu
  174. .I Wm-deb (1)
  175. has got a
  176. .CW stack
  177. button to bring up the stack window if it has previously been dismissed.
  178. It also allows breakpoints to be set in modules that have not yet been loaded.
  179. .IP \(bu
  180. .CW wm/memory 's
  181. display has been redesigned to be more informative.
  182. .IP \(bu
  183. .CW wm/tetris
  184. allows the use of a stylus (or mouse) to guide the placement of pieces.
  185. .IP \(bu
  186. .CW wm/view
  187. supports PNG format
  188. .IP \(bu
  189. .CW wm/view
  190. has a new option
  191. .CW -i
  192. for use in
  193. .I plumbing (6)
  194. files, to cause it to listen for messages from the
  195. .I plumber (8).
  196. Existing plumbing files that invoke
  197. .CW wm/view
  198. will typically need to change to add that option for image viewing
  199. using the plumber to work as expected.
  200. .IP \(bu
  201. .I Newns (2)
  202. provides more general option parsing by using
  203. .I arg (2),
  204. and does error checking unless the
  205. .CW -i
  206. option is given to the
  207. .I namespace (6)
  208. commands.
  209. Its internal
  210. .CW mount
  211. commandalso accepts the new options
  212. .CW -k
  213. .I keyfile
  214. to select the source of the authentication key, and
  215. .CW -C
  216. .I alg
  217. to select the encryption algorithm.
  218. .IP \(bu
  219. .I Plumber (8)
  220. takes a
  221. .CW -v
  222. option to cause it to log the contents of messages (for debugging plumbing applications), and
  223. also the option
  224. .CW -c
  225. .I wmchan
  226. to select an alternative window manager channel instead of
  227. .CW /chan/wm
  228. when the
  229. .CW -w
  230. option is used.
  231. .SH
  232. .I "Tk changes and extensions"
  233. .LP
  234. Many of the Tk changes enforce rules and do more error-checking than before,
  235. but there are several extensions and interface changes as well.
  236. .IP \(bu
  237. Tk applications must create the parent widget before its children.
  238. Currently the check to enforce this rule has been suppressed, but it will be enabled in future.
  239. .IP \(bu
  240. Widget names are now checked for well-formedness: neither trailing dot nor double dot are allowed.
  241. .IP \(bu
  242. When text in a text widget is deleted, embedded windows in
  243. that text are only deleted if they are descendents of the text
  244. widget.
  245. .IP \(bu
  246. Text widget now redisplays correctly when an embedded window
  247. is destroyed.
  248. .IP \(bu
  249. Text widget now checks for embedded windows in the text that have been destroyed since they were added to the text.
  250. .IP \(bu
  251. Widgets packed under a destroyed widget that are not
  252. descendents of that widget are now removed correctly
  253. from the packing hierarchy.
  254. .IP \(bu
  255. .CW -activebackground
  256. now changes the border appropriately, same as
  257. .CW -background .
  258. .IP \(bu
  259. .CW scrollbar
  260. now returns currently activated part when
  261. .CW activate
  262. is called
  263. with no arguments.
  264. .IP \(bu
  265. Only one part of a scrollbar may be active at any one time.
  266. .IP \(bu
  267. Tk can now distinguish between a null argument
  268. .CW {}
  269. and a missing argument.
  270. .IP
  271. Creating an embedded window in a text widget at index 1.0
  272. no longer causes the packer to go into an infinite loop.
  273. .IP \(bu
  274. Changing the options on an embedded window in a text
  275. widget caused an uninitialised pointer access.
  276. .IP \(bu
  277. Changing the window associated with an embedded window item
  278. in text and canvas widgets previously did not disassociate the old window correctly.
  279. .IP \(bu
  280. Changing the window associated with an embedded window item
  281. in a text widget did not set the widget's size appropriately.
  282. .IP \(bu
  283. The
  284. .CW -baseline
  285. alignment option for embedded windows in text widgets previously
  286. did not calculate the line height correctly.
  287. .IP \(bu
  288. The
  289. .CW -relief
  290. setting for buttons is now restored after enter/leave or selection.
  291. .IP \(bu
  292. Buttons 4, 5 and 6 have been added (for the iPAQ).
  293. .IP \(bu
  294. Tk no longer crashes if the `grab' changes during the processing of a mouse event.
  295. .IP \(bu
  296. A new event
  297. .CW <Destroy>
  298. can be bound to a widget to receive notification when it is destroyed (eg, by the destruction of
  299. a parent widget).
  300. The
  301. .CW <Configure>
  302. event is propagated to slaves as well as the configured master.
  303. These two changes make it easier to implement pseudo-widgets such as
  304. .I dividers (2).
  305. .IP \(bu
  306. .CW -anchor
  307. has been implemented for labels;
  308. .CW -justify
  309. should be implemented as documented.
  310. .IP \(bu
  311. Submenus are unmapped correctly.
  312. .IP \(bu
  313. Tk detects command loops (by limiting recursion depth).
  314. .IP \(bu
  315. .CW canvas
  316. has a new boolean option
  317. .CW -buffered
  318. that controls whether the whole canvas, or just the visible region, is allocated an off-screen buffer image.
  319. It defaults to just the visible area only.
  320. .IP \(bu
  321. .CW canvas
  322. has new operations
  323. .CW screenx
  324. and
  325. .CW screeny
  326. to map canvas coordinates to screen coordinates.
  327. .SH
  328. .I "New commands and modules"
  329. .IP \(bu
  330. A collection of small and tiny playing card images have been added, in
  331. .CW /icons/smallcards
  332. and
  333. .CW /icons/tinycards .
  334. .IP \(bu
  335. .CW install/wfind
  336. lists the versions of a given file in a set of installation packages.
  337. .IP \(bu
  338. .I Touchcal (8)
  339. provides touch-screen calibration; it runs both inside and outside the window
  340. manager
  341. .I wm (1).
  342. Both internal and external interfaces are completely different from previous versions.
  343. .IP \(bu
  344. .I Wm-keyboard (1)
  345. describes new commands
  346. .CW wm/keyboard
  347. and
  348. .CW wm/pen
  349. that provide soft keyboard and single-stroke gesture recognition for touch screen devices.
  350. .IP \(bu
  351. .I Gamesrv (4)
  352. provides a file system interface for multi-player networked games;
  353. .I gamesrv (2)
  354. provides the interface for the game-specific engines loaded on demand by the game server.
  355. .IP \(bu
  356. .CW utils/awk
  357. is a new directory containing the source for a version of
  358. .I awk
  359. for use in doing Inferno ports for systems that lack it (or a sufficiently recent version), including Windows.
  360. It is not currently made automatically for any system.
  361. It is covered by its own licence; see the
  362. .CW README
  363. and
  364. .CW NOTICE
  365. files in that directory.
  366. .SH
  367. .I "Limbo compiler"
  368. .IP \(bu
  369. The compiler now adds a source file name (relative to the Inferno root) to each Dis
  370. file, to allow
  371. .I debug (2)
  372. and thus the debugger
  373. .CW wm/deb
  374. and other commands such as
  375. .I profile (1)
  376. and
  377. .I stack (1)
  378. to find source
  379. and
  380. .CW .sbl
  381. files without prompting.
  382. .IP \(bu
  383. The initialisation of large arrays avoids deep recursion, preventing a trap on Nt
  384. and a large stack on other platforms.
  385. .IP \(bu
  386. Overflow is avoided when sorting integers for case statements.
  387. .SH
  388. .I "Compilers and architectures"
  389. .IP \(bu
  390. The linker
  391. .CW 5l
  392. has a critical bug fix in
  393. .CW utils/5l/span.c
  394. that fixes a bug in the flushing of literal pools.
  395. .IP \(bu
  396. .CW 5coff
  397. has a small change to make the output conform to actual practice
  398. not COFF documentation.
  399. .SH
  400. .I "Hosted and Native Inferno"
  401. .IP \(bu
  402. .I Emu
  403. has the following fixes and improvements:
  404. .RS
  405. .IP \(bu
  406. Trap handling on Windows now (we hope) does all that is required
  407. to work on many versions, variants, updates and releases.
  408. .IP \(bu
  409. The cursor appears correctly under Windows 2000.
  410. .IP \(bu
  411. Windows
  412. .I emu
  413. passes page up, down scroll, pause, insert, delete and print
  414. characters through to
  415. .CW /dev/keyboard .
  416. .IP \(bu
  417. .CW styx.c
  418. prevents bad Styx messages from causing trouble.
  419. .IP \(bu
  420. .CW devenv.c
  421. returns
  422. .CW "file exists"
  423. if an attempt is made to create an existing name;
  424. it implements
  425. .CW ORCLOSE .
  426. .IP \(bu
  427. .CW devroot.c
  428. makes directories mode 555 not 777.
  429. .RE
  430. .IP \(bu
  431. For the native kernels only:
  432. .RS
  433. .IP \(bu
  434. .I Env (3)
  435. is now provided for native kernels.
  436. To add it to a kernel, change the kernel configuration file as follows:
  437. .RS
  438. .IP 1.
  439. Include the device driver
  440. .CW env
  441. in the
  442. .CW dev
  443. section.
  444. .IP 2.
  445. Include the support file
  446. .CW env
  447. in the
  448. .CW port
  449. section.
  450. .IP 3.
  451. Include the name
  452. .CW /env
  453. in the
  454. .CW root
  455. section.
  456. .LP
  457. To exclude it from a kernel, include the support file
  458. .CW noenv
  459. in the
  460. .CW port
  461. section.
  462. You should only do this if you are trying to make a small highly specialised kernel;
  463. general applications are likely to make more use of
  464. .CW /env
  465. now that it is there,
  466. eventually to replace
  467. .CW sysenv
  468. and to select locales.
  469. .RE
  470. .IP \(bu
  471. Common floating-point emulator code has moved from platform-specific directories to
  472. .CW /os/port/fpi.c
  473. and
  474. .CW /os/port/fpimem.c ,
  475. with corresponding changes to configuration files and
  476. .CW mkfiles .
  477. .IP \(bu
  478. The scheduling code in
  479. .CW /os/port/proc.c
  480. has changed to support wait-for-interrupt.
  481. If no process can be scheduled, the platform-specific function
  482. .CW "void idlehands(void)"
  483. is called, with interrupts
  484. .I off
  485. (unlike the function of the same name in Plan 9).
  486. On most platforms, it currently is an empty function defined by
  487. .CW #define
  488. in
  489. .CW fns.h ,
  490. and the scheduler effectively spins waiting for an interrupt to make a kernel process ready,
  491. but on the iPAQ and a few other platforms it uses the hardware-specific
  492. ``wait for interrupt'' function, for power saving.
  493. .IP \(bu
  494. A new package
  495. .CW ipaq
  496. is available that populates
  497. .CW /os/ipaq
  498. with the preliminary Inferno port to the Compaq iPAQ.
  499. .IP \(bu
  500. .CW /os/ip
  501. has incorporated bug fixes and improvements from Plan 9 to
  502. keep the source code up to date:
  503. .RS
  504. .IP \-
  505. .CW /net/ndb
  506. has been added, to allow for future changes in IP configuration code
  507. .IP \-
  508. permissions are checked more carefully;
  509. .CW wstat
  510. is implemented
  511. .IP \-
  512. .CW Conv
  513. structures are now unlocked on
  514. .CW close
  515. by
  516. .CW devip.c
  517. not by each protocol's implementation;
  518. the
  519. .CW car
  520. lock for connect/announce no longer exists, because the conversation itself is locked
  521. .IP \-
  522. some missing
  523. .CW waserror
  524. calls have been added
  525. .IP \-
  526. ensure local port is unique across existing conversations
  527. .IP \-
  528. .CW tos
  529. can be set for a converstation by a
  530. .CW tos
  531. control message, and is retained during routing
  532. .IP \-
  533. .CW qdiscard
  534. in
  535. .CW qio.c
  536. returns the number of bytes discarded
  537. .IP \-
  538. protocol handlers
  539. .CW esp.c ,
  540. .CW gre.c ,
  541. .CW icmp.c ,
  542. .CW ip.c ,
  543. .CW ipifc.c ,
  544. .CW ipmux.c ,
  545. .CW rudp.c
  546. and
  547. .CW tcp.c
  548. have consequentially changed;
  549. the TCP/IP implementation most extensively;
  550. .CW il.c
  551. and
  552. .CW udp.c
  553. have not yet been realigned with Plan 9
  554. .IP \-
  555. medium drivers use the structure-member initialisation extension of Plan 9 C,
  556. to insulate driver source text from changes in the layout of the
  557. .CW Medium
  558. structure
  559. .RE
  560. .IP \(bu
  561. The SA1100 UART driver now correctly pushes input up the stack when the FIFO empties.
  562. .RE
  563. .LP
  564. The remaining points are common to both hosted and native Inferno:
  565. .IP \(bu
  566. .I Cons (3)
  567. implements the file
  568. .CW kprint
  569. to capture Inferno console messages; and a file
  570. .CW jit
  571. that can be used to set the compile-on-the-fly option dynamically or read its current state.
  572. .IP \(bu
  573. There is a new kernel function:
  574. .RS
  575. .DS
  576. .ft 5
  577. char* seprint(char *buf, char *ebuf, char *fmt, ...);
  578. .ft P
  579. .DE
  580. which puts a formatted result into
  581. .CW buf
  582. never writing beyond
  583. .CW ebuf-1
  584. (including the trailing null byte).
  585. It returns the address of the next available byte in
  586. .I buf .
  587. .RE
  588. .IP \(bu
  589. .CW kfs 's
  590. .CW Eexist
  591. error has become
  592. .CW Eexists
  593. to remove a clash with the new
  594. .CW Eexist
  595. name in
  596. .CW error.h
  597. .IP \(bu
  598. .CW exportfs.c
  599. maintains offsets in exported directories correctly.
  600. .IP \(bu
  601. The undocumented
  602. .CW devaudit.c
  603. has been removed.
  604. .IP \(bu
  605. Some Limbo profiler bugs have been fixed.
  606. .IP \(bu
  607. A race for the use of a shared semaphore has been fixed in
  608. .CW devprog.c .
  609. .IP \(bu
  610. .CW devprog.c
  611. has a new debugging event:
  612. .CW load
  613. .I filename
  614. corresponds to the execution of a Dis
  615. .CW load
  616. instruction.
  617. .IP \(bu
  618. .CW devdraw.c
  619. implements
  620. .CW readpixels
  621. from a window
  622. .NH 1
  623. Updating the software
  624. .LP
  625. You should install the updates as the host operating system user who owns the Inferno files and directories
  626. on your system.
  627. You might like to take a backup copy of the existing tree, just in case.
  628. Do the following to update the installation.
  629. .IP 1.
  630. Fetch the update archives required, namely
  631. .CW inferno.tgz ,
  632. .CW src.tgz ,
  633. .CW utils.tgz
  634. and any platform-specific packages required for your installation.
  635. If you are running Windows, for instance, you will need
  636. .CW Nt.tgz ;
  637. if running Plan 9, you will need
  638. .CW Plan9.tgz .
  639. These are gzip'd tar files containing files starting with the directory
  640. name
  641. .CW updates/20011003 .
  642. Unpack each in your Inferno root directory.
  643. For instance, you can unpack
  644. .CW inferno.tgz
  645. using the Inferno commands:
  646. .RS
  647. .P1
  648. cd /
  649. gunzip <inferno.tgz | gettar
  650. .P2
  651. The following instructions assume they are visible in the Inferno hierarchy.
  652. Make sure there is sufficient space in the file system holding that hierarchy.
  653. Each archive can be removed after unpacking, and the
  654. .CW updates
  655. directory can be removed after installation.
  656. .RE
  657. .IP 2.
  658. After unpacking the archives,
  659. (re)start
  660. the existing Inferno
  661. .I emu ;
  662. it will be quicker if you use the
  663. .CW -c1
  664. option to force compiled mode.
  665. It is best to use only the Inferno console; do not start the window system, since
  666. the updates will change files in the running system.
  667. On the other hand, it is a good idea to make the window in the host
  668. operating system a scrolling one, so that you can scroll back to
  669. see any errors.
  670. All following commands are run in the Inferno environment.
  671. .IP 3.
  672. Change to the directory containing the updates:
  673. .RS
  674. .P1
  675. cd /updates/20011003
  676. .P2
  677. .RE
  678. .NE 1i
  679. .IP 4.
  680. Updated installation software was included in
  681. .CW inferno.tgz .
  682. You must first unpack that installation software, as follows:
  683. .RS
  684. .P1
  685. sh ./unpacktools
  686. .P2
  687. .RE
  688. .NE 1i
  689. .IP 5.
  690. Update the installed Inferno, source and utility source directories
  691. using the script
  692. .CW applybase :
  693. .RS
  694. .P1
  695. sh ./applybase
  696. .P2
  697. .LP
  698. That script updates the
  699. .CW inferno ,
  700. .CW src
  701. and
  702. .CW utils
  703. packages.
  704. You might see warnings if you have modified any non-configuration files from the original release.
  705. .RE
  706. .IP 6.
  707. Update one or more platform specific files for your platform(s).
  708. The directories are named after the platforms:
  709. .CW Solaris
  710. for Solaris,
  711. .CW Plan9
  712. for Plan 9,
  713. .CW Nt
  714. for all Windows systems,
  715. and so on.
  716. For each
  717. .I platform
  718. that you run, do:
  719. .RS
  720. .P1
  721. sh ./applyplat \fIplatform\fP
  722. .P2
  723. For instance, if you use Windows, run
  724. .P1
  725. sh ./applyplat Nt
  726. .P2
  727. The iPAQ distribution is installed the same way (it is just another platform):
  728. .P1
  729. sh ./applyplat ipaq
  730. .P2
  731. which populates
  732. .CW /os/ipaq
  733. in the Inferno tree.
  734. .RE
  735. .IP 6.
  736. Quit
  737. .I emu .
  738. The new version of
  739. .I emu
  740. will be called
  741. .CW emu.new
  742. in the platform-specific directory
  743. (eg,
  744. .CW Solaris/sparc/bin/emu.new ).
  745. Rename the old
  746. .CW emu
  747. file as
  748. .CW emu.old ,
  749. then rename the new
  750. .CW emu.new
  751. as
  752. .CW emu
  753. on Plan 9 and Unix systems,
  754. or
  755. .CW emu.exe
  756. on Windows.
  757. When run, it should announce itself as
  758. ``Inferno Third Edition (3 October 2001)''.