Spec 1170

Szerzô: Micsik András
Megjelent az Infopen magazin 1994 augusztus-szeptemberi számában

Egyre közelebb kerül az az idôpont, amikor az egységes UNIX API specifikáció - más nevein Core OS API, Common API, CAPI, vagy a benne szereplô interfészek száma alapján a Spec 1170 - kilép az X/Open berkeibôl, és megkezdi mûködését a piacon. Mike Lambert, az X/Open technikai vezetôje közölte, hogy a specifikáció gyorsított elfogadási folyamata befejezôdött, és már csak a végsô szerkesztés van hátra. Ezek szerint a Spec 1170 megjelenése már ebben a negyedévben várható.

Az X/Open második negyedévi dokumentációs CD-ROM-ján már megtalálható az a tervezet, amely bekerülhet az XPG4 ajánláskészletbe. Az egységes UNIX alkotóelemei négy részre osztva jelentek meg, a System Interfaces and Headers, Commands and Utilities, System Interface Definitions, valamint az Internationalised Terminal Interfaces (XCURSES) kötetekben. A UNIX-ra vonatkozó definíciók az X/Open régebbi specifikációiba ágyazódnak, és egy külön úgynevezett opciócsoportot alkotnak. A UNIX védjegyes rendszerek tehát annyiban fognak különbözni az XPG4 védjegyes rendszerektôl, hogy számukra a UNIX opciócsoport támogatása kötelezô lesz.

1. táblázat: Dátumok az egységes UNIX API történetében

  '93 március           A COSE megalakulása
  '93 szeptember        A specifikáció megjelenése
  '94 január            A specifikáció átadása az X/Open-nek
  '94 július            Az X/Open specifikáció tervezet megjelenése
  '94 év vége (terv)    A specifikáció véglegesítése, a védjegyezés elindítása

A CDE és a Spec 1170

Talán nem haszontalan felidézni a Spec 1170 eddigi történetét, amely a COSE (Common Open Software Environment) megalakulásáig nyúlik vissza. A COSE célja a nyílt rendszeres kulcstechnológiák definiálása és fokozatos fejlesztése volt, amely munkát a CDE (Common Desktop Environment) elôkészítésével kezdték meg. A következô területeket jelölték még meg késôbbi tevékenységeik célpontjául: egységes operációs rendszer API, rendszeradminisztráció, hálózatok, grafika, multimédia, objektumok. A CDE specifikáció, amely egy közös megjelenítési felületet és alkalmazások közötti együttmûködést ír le, szintén arra vár, hogy az X/Open ajánlások sorába kerülhessen. A helyzet azonban furcsán fordult, ugyanis - talán a gyengébb konszenzus miatt - a CDE jócskán késik, és így, annak ellenére, hogy az egységes UNIX API késôbb került az X/Open-hez, elfogadása elôbb várható, mint a CDE elfogadása.

A Spec 1170 összeállítása

Az egységes UNIX API kidolgozásánál a létezô és elismert szabványok biztosították a kiindulópontot. A munkacsoport úgy gondolta, hogy ha a szabványokat nem módosítják, hanem csak kibôvítik, akkor az azokhoz igazodó alkalmazások egy olyan bázist jelentenek, amelyet könnyebb átdolgozni az új specifikációnak megfelelôen. Az X/Open XPG4 operációs rendszer környezete lett végül is az alap, amely az API interfészeinek körülbelül felét adta. Ezt a választást egyrészt az X/Open széles körben elfogadott tevékenysége indokolta, másrészt pedig az, hogy az XPG4 támogatja az e területre vonatkozó fontos nemzetközi szabványokat (POSIX.1, POSIX.2, ISO C). Az XPG4-bôl származik az a 174 shell-parancs is, amelyeket a programokban gyakrabban használnak, valamint számos header.

A következô forrás a Unix International és az OSF két korábbi Unix specifikációja volt, amelyekbôl a System V Interface Definition (SVID) Edition 3 Level 1 és az Application Environment Specification (AES) Full Use interfészek kerültek bele az egységes UNIX-ba. A SVID-bôl származó interfészek nagy részét a curses terminál-kezelô szoftver új, színes és többnyelvû változata adja, amely az XPG4 régebbi (XCURSES) specifikációját fogja felváltani. Az AES Full Use általában megfelelt az XPG4-nek, így néhány interfész átvételével megoldódott a kompatibilitás a Spec 1170-nel.

A szabványok sorravétele után azt vizsgálták, hogy mennyiben kell bôvíteni az eddigi API-készletet a programozási felhasználtság alapján. Kiválasztottak 50 szoftverterméket valamint szoftver modulokat a különbözô platformokról, összesen több mint 3500-at. Az alkalmazásokat az IDC 1992-es felmérésében közzétett legnagyobb eladási példányszámmal rendelkezôk közül válogatták, de úgy, hogy egyik szoftver ágazat se legyen túlnyomó többségben. Annak a feltétele, hogy egy eljárás bekerüljön az elbírálandók közé, vagy az elsô 10 alkalmazás valamelyikének, vagy a következô 40 alkalmazásból háromnak kellett felhasználnia azt. Ezen kívül úgy is bekerülhetett egy eljárás, ha legalább két különbözô platformon hét vagy több modul hívta. Ilyen kritériumrendszer szerint elemezték a kiválasztott szoftverekben elôforduló hívásokat, és így 130 olyan eljárást találtak, amely megfelelt a kritériumoknak, és nem szerepelt az addigi API-k között. Ezek leginkább olyan a UNIX Berkeley változatából származó hívások voltak, amelyek kimaradtak az általános UNIX specifikációkból. Amennyiben egy ilyen eljárás nem volt ellentétben a szabványokkal, hozzáadták az egységes UNIX API-hoz.

Ismétlôdések az API-kban

Természetesen adódtak olyan feladatok, amelyek megoldására több különbözô interfész is bekerült az egységes UNIX kezdeti változatába. Az ilyen ismétlôdések kiküszöbölése többféle megoldást eredményezett. Általában a kevésbé elterjedt interfészeket kihagyták a specifikációból az elterjedtebbek javára. Sok esetben azonban túl sok alkalmazást érintett volna az, ha egy interfész kimarad, ezért ilyenkor megengedték a dupla funkcionalitást. A memóriakezelô rutinoknak például mind a szabványos, mind a Berkeley változata benn maradt a Spec 1170-ben. Hasonlóan a hálózati API tartalmazni fogja a BSD 4.3 Reno socket-eket, és az X/Open Transport Interface-t (XTI) is. Vannak olyan esetek is, ahol a kétféle interfész egyidejû használatát korlátozni kell, mint például a szignálok kezelése System V illetve BSD stílusban. Útmutatók fognak készülni, amelyek a programozókat a "támogatottabb" interfészek felé irányítják, és felhívják a figyelmet az API-k használatában elkövethetô hibákra.

A források megoszlása

Az XPG4 kicsivel több mint a felét adja a specifikációnak, amelyhez, az átfedéseket nem számítva, a hozzájárulások a következôképpen alakultak; a SVID curses eljárásai durván egyötödét, a használat alapján hozzáadott interfészek 15 százalékát, az egyéb SVID hívások 10, és az AES hívások kevesebb mint 5 százalékát teszik ki az egységes UNIX API-nak.

2. táblázat: Az egységes API interfészeinek származása (Egy interfész több forrásból is származhat)

  Funkciócsoport   Összesen    XPG4     SVID-3      AES    Használat alapján
  Memória            19         11        12         12      17          
  Curses            324        114       324          0      27          
  Clib              114         92        98         81      65          
  Math               64         43        52         43      24 
  Többnyelvûsítés    62         60        12         11       9           
  Proc               61         32        43         37      36          
  Állományrendszer   44         28        40         35      35          
  Standard I/O       41         40        41         41      33          
  Szignálok          25         12        16         12      16          
  Dev                20         12        18         13       6           
  Sockets            19          0         0          0      15          
  Egyéb             113         22        60         15      16          
  Összesen          926        479       738        322     299         
  Header-ek          70                                                  
  Parancsok         174                                                 
  Összesen         1170                                                

Egy felmérés szerint a Spec 1170 az összeállításkor vizsgált termékminta alkalmazásaiban 95-100 százalékban lefedi a hívott interfészek listáját. A hiányzó interfészek platform-specifikus illetve rendhagyó hívásokból erednek.

Védjegyezés

A Spec 1170 tervezete széleskörû véleményeztetés után az X/Open-hez került, amely a UNIX védjegyezését erre a specifikációra fogja építeni. Az X/Open nagyobb változtatások nélkül elfogadta a tervezetet, és a specifikáció megjelentetésével egyidôben foglalkozik a védjegyezési mechanizmus kifejlesztésével.

A háromféle UNIX védjegybôl az elsôt, az ideiglenes (interim) védjegyet már lehet igényelni. Ennek feltételei: XPG3 vagy XPG4 konformancia, SVID2 vagy SVID3 konformancia, Novell licensz, és vállalása annak, hogy egy éven belül megszerzik a "hard" UNIX védjegyet.

A "soft" védjegy a többnyelvûsített curses kivételével teljes konformanciát szab meg a Spec 1170-hez, valamint elkötelezettséget, hogy a védjegyet továbbviszik a "hard" fokozatra.

A "hard" UNIX védjegy teljes Spec 1170 és curses konformanciát jelent, és azt, hogy a termék megfelelt a tesztelésnek.

UNIX védjegyes termékek megjelenése az év végére várható. Az olyan védjegyes termékek, amelyek operációs rendszertôl függetlenek, nem a UNIX védjegyet fogják használni, hanem az XPG-t, ezzel is jelezve szélesebb körû hordozhatóságukat.

Vélemények a UNIX jövôjérôl

A nyílt rendszerek szakértôi szerint a Spec 1170 egy megfelelô, de viszonylag könnyû lépés, mivel a specifikáció támogatottsága eléggé egységes. Az egységes és nyílt UNIX alapjait természetesen az operációs rendszer szinten kell megvetni, de a Spec 1170 önmagában még viszonylag kevés program írásához elegendô, hiszen például csak karakteres megjelenítést biztosít.

A CDE-vel együtt már elég sok féle hordozható alkalmazás írása válna lehetségessé, de a CDE-n belül nem sikerült az egyes gyártókat olyan egyenletes súlyozással képviseltetni, mint a Spec 1170-ben, amely késlelteti az elfogadást.

A UNIX esetében a hordozhatóság még mindig magában rejt egy újrafordítást. Az alkalmazások MS Windows-ban megszokott töltsd-le-és-indítsd-el szintû hordozhatóságához ennél több kell, elsôsorban valamilyen közös bináris formátum.

Az elkövetkezô idôszak adhat csak választ arra, hogy mennyi rendszergyártó és szoftverfejlesztô cég tér át az új UNIX specifikációkra és milyen gyorsan, valamint arra a kérdésre, hogy mennyire válik elterjedtté majd a rendszerek önkényes bôvítése saját interfészekkel és a meglévô interfészek kijátszása.