123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>History of Ghostscript versions 4.n</title>
- <!-- $Id: History4.htm,v 1.13.2.2 2002/02/01 05:31:25 raph Exp $ -->
- <!-- Originally: history4.txt -->
- <!--
- WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
- re-create the table of contents here, because it will replace the
- hand-edited TOC subheads with a separate subhead for each H2 in
- the body of the file. Or if you do, first look at the original
- TOC to see how to edit it for visual conciseness.
- -->
- <link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
- </head>
- <body>
- <!-- [1.0 begin visible header] ============================================ -->
- <!-- [1.1 begin headline] ================================================== -->
- <h1>History of Ghostscript versions 4.n</h1>
- <!-- [1.1 end headline] ==================================================== -->
- <!-- [1.2 begin table of contents] ========================================= -->
- <h2>Table of contents</h2>
- <blockquote><ul>
- <li><a href="#Version4.81">Version 4.81 (6/1/97)</a>
- <ul>
- <li><a href="#V4.81_Documentation">Documentation</a>,
- <a href="#V4.81_Procedures">Procedures</a>,
- <a href="#V4.81_Utilities">Utilities</a>,
- <a href="#V4.81_Drivers">Drivers</a>,
- <a href="#V4.81_Platforms">Platforms</a>,
- <a href="#V4.81_Interpreter">Interpreter</a>,
- <a href="#V4.81_Library">Library</a>
- </ul>
- <li><a href="#Version4.80">Version 4.80 (limited) (5/28/97)</a>
- <ul>
- <li><a href="#V4.80_Documentation">Documentation</a>,
- <a href="#V4.80_Procedures">Procedures</a>,
- <a href="#V4.80_Utilities">Utilities</a>,
- <a href="#V4.80_Drivers">Drivers</a>,
- <a href="#V4.80_Platforms">Platforms</a>,
- <a href="#V4.80_Fonts">Fonts</a>,
- <a href="#V4.80_Interpreter">Interpreter</a>,
- <a href="#V4.80_Streams">Streams</a>,
- <a href="#V4.80_Library">Library</a>
- </ul>
- <li><a href="#Version4.74">Version 4.74 (limited) (5/5/97)</a>
- <ul>
- <li><a href="#V4.74_Documentation">Documentation</a>,
- <a href="#V4.74_Utilities">Utilities</a>,
- <a href="#V4.74_Drivers">Drivers</a>,
- <a href="#V4.74_Interpreter">Interpreter</a>,
- <a href="#V4.74_Streams">Streams</a>,
- <a href="#V4.74_Library">Library</a>
- </ul>
- <li><a href="#Version4.73">Version 4.73 (limited) (4/19/97)</a>
- <ul>
- <li><a href="#V4.73_Documentation">Documentation</a>,
- <a href="#V4.73_Procedures">Procedures</a>,
- <a href="#V4.73_Utilities">Utilities</a>,
- <a href="#V4.73_Drivers">Drivers</a>,
- <a href="#V4.73_Platforms">Platforms</a>,
- <a href="#V4.73_Interpreter">Interpreter</a>,
- <a href="#V4.73_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.73_Streams">Streams</a>,
- <a href="#V4.73_Library">Library</a>
- </ul>
- <li><a href="#Version4.72">Version 4.72 (limited) (4/14/97)</a>
- <ul>
- <li><a href="#V4.72_Documentation">Documentation</a>,
- <a href="#V4.72_Procedures">Procedures</a>,
- <a href="#V4.72_Drivers">Drivers</a>,
- <a href="#V4.72_Platforms">Platforms</a>,
- <a href="#V4.72_Interpreter">Interpreter</a>,
- <a href="#V4.72_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.72_Streams">Streams</a>,
- <a href="#V4.72_Library">Library</a>
- </ul>
- <li><a href="#Version4.71">Version 4.71 (limited) (3/31/97)</a>
- <ul>
- <li><a href="#V4.71_Documentation">Documentation</a>,
- <a href="#V4.71_Procedures">Procedures</a>,
- <a href="#V4.71_Drivers">Drivers</a>,
- <a href="#V4.71_Interpreter">Interpreter</a>,
- <a href="#V4.71_Streams">Streams</a>,
- <a href="#V4.71_Library">Library</a>
- </ul>
- <li><a href="#Version4.70">Version 4.70 (limited) (3/26/97)</a>
- <ul>
- <li><a href="#V4.70_Documentation">Documentation</a>,
- <a href="#V4.70_Procedures">Procedures</a>,
- <a href="#V4.70_Drivers">Drivers</a>,
- <a href="#V4.70_Platforms">Platforms</a>,
- <a href="#V4.70_Interpreter">Interpreter</a>,
- <a href="#V4.70_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.70_Streams">Streams</a>,
- <a href="#V4.70_Library">Library</a>
- </ul>
- <li><a href="#Version4.61">Version 4.61 (limited) (3/13/97)</a>
- <ul>
- <li><a href="#V4.61_Documentation">Documentation</a>,
- <a href="#V4.61_Procedures">Procedures</a>,
- <a href="#V4.61_Drivers">Drivers</a>,
- <a href="#V4.61_Platforms">Platforms</a>,
- <a href="#V4.61_Interpreter">Interpreter</a>,
- <a href="#V4.61_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.61_Streams">Streams</a>,
- <a href="#V4.61_Library">Library</a>
- </ul>
- <li><a href="#Version4.60">Version 4.60 (limited) (3/2/97)</a>
- <ul>
- <li><a href="#V4.60_Documentation">Documentation</a>,
- <a href="#V4.60_Procedures">Procedures</a>,
- <a href="#V4.60_Drivers">Drivers</a>,
- <a href="#V4.60_Platforms">Platforms</a>,
- <a href="#V4.60_Fonts">Fonts</a>,
- <a href="#V4.60_Interpreter">Interpreter</a>,
- <a href="#V4.60_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.60_Streams">Streams</a>,
- <a href="#V4.60_Library">Library</a>
- </ul>
- <li><a href="#Version4.51">Version 4.51 (limited) (2/9/97)</a>
- <ul>
- <li><a href="#V4.51_Procedures">Procedures</a>,
- <a href="#V4.51_Drivers">Drivers</a>,
- <a href="#V4.51_Platforms">Platforms</a>,
- <a href="#V4.51_Interpreter">Interpreter</a>,
- <a href="#V4.51_Streams">Streams</a>,
- <a href="#V4.51_Library">Library</a>
- </ul>
- <li><a href="#Version4.50">Version 4.50 (limited) (1/31/97)</a>
- <ul>
- <li><a href="#V4.50_Documentation">Documentation</a>,
- <a href="#V4.50_Procedures">Procedures</a>,
- <a href="#V4.50_Drivers">Drivers</a>,
- <a href="#V4.50_Platforms">Platforms</a>,
- <a href="#V4.50_Interpreter">Interpreter</a>,
- <a href="#V4.50_Streams">Streams</a>,
- <a href="#V4.50_Library">Library</a>
- </ul>
- <li><a href="#Version4.41">Version 4.41 (private) (1/21/97)</a>
- <ul>
- <li><a href="#V4.41_Procedures">Procedures</a>,
- <a href="#V4.41_Drivers">Drivers</a>,
- <a href="#V4.41_Fonts">Fonts</a>,
- <a href="#V4.41_Interpreter">Interpreter</a>,
- <a href="#V4.41_Streams">Streams</a>,
- <a href="#V4.41_Library">Library</a>
- </ul>
- <li><a href="#Version4.40">Version 4.40 (private) (1/13/97)</a>
- <ul>
- <li><a href="#V4.40_Documentation">Documentation</a>,
- <a href="#V4.40_Utilities">Utilities</a>,
- <a href="#V4.40_Drivers">Drivers</a>,
- <a href="#V4.40_Interpreter">Interpreter</a>,
- <a href="#V4.40_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.40_Library">Library</a>
- </ul>
- <li><a href="#Version4.39">Version 4.39 (limited) (1/1/97)</a>
- <ul>
- <li><a href="#V4.39_Documentation">Documentation</a>,
- <a href="#V4.39_Procedures">Procedures</a>,
- <a href="#V4.39_Utilities">Utilities</a>,
- <a href="#V4.39_Drivers">Drivers</a>,
- <a href="#V4.39_Interpreter">Interpreter</a>,
- <a href="#V4.39_Streams">Streams</a>,
- <a href="#V4.39_Library">Library</a>
- </ul>
- <li><a href="#Version4.38">Version 4.38 (limited) (12/20/96)</a>
- <ul>
- <li><a href="#V4.38_Interpreter">Interpreter</a>,
- <a href="#V4.38_Streams">Streams</a>,
- <a href="#V4.38_Library">Library</a>
- </ul>
- <li><a href="#Version4.37">Version 4.37 (limited) (12/10/96)</a>
- <ul>
- <li><a href="#V4.37_Fonts">Fonts</a>,
- <a href="#V4.37_Interpreter">Interpreter</a>,
- <a href="#V4.37_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.37_Library">Library</a>
- </ul>
- <li><a href="#Version4.36">Version 4.36 (limited) (12/3/96)</a>
- <ul>
- <li><a href="#V4.36_Documentation">Documentation</a>,
- <a href="#V4.36_Drivers">Drivers</a>,
- <a href="#V4.36_Interpreter">Interpreter</a>,
- <a href="#V4.36_Library">Library</a>
- </ul>
- <li><a href="#Version4.35">Version 4.35 (limited) (11/24/96)</a>
- <ul>
- <li><a href="#V4.35_Documentation">Documentation</a>,
- <a href="#V4.35_Procedures">Procedures</a>,
- <a href="#V4.35_Interpreter">Interpreter</a>,
- <a href="#V4.35_Streams">Streams</a>,
- <a href="#V4.35_Library">Library</a>
- </ul>
- <li><a href="#Version4.34">Version 4.34 (limited) (11/18/96)</a>
- <ul>
- <li><a href="#V4.34_Documentation">Documentation</a>,
- <a href="#V4.34_Procedures">Procedures</a>,
- <a href="#V4.34_Drivers">Drivers</a>,
- <a href="#V4.34_Interpreter">Interpreter</a>,
- <a href="#V4.34_Streams">Streams</a>,
- <a href="#V4.34_Library">Library</a>
- </ul>
- <li><a href="#Version4.33">Version 4.33 (limited) (11/6/96)</a>
- <ul>
- <li><a href="#V4.33_Documentation">Documentation</a>,
- <a href="#V4.33_Procedures">Procedures</a>,
- <a href="#V4.33_Interpreter">Interpreter</a>,
- <a href="#V4.33_Library">Library</a>
- </ul>
- <li><a href="#Version4.32">Version 4.32 (limited) (11/1/96)</a>
- <ul>
- <li><a href="#V4.32_Documentation">Documentation</a>,
- <a href="#V4.32_Drivers">Drivers</a>,
- <a href="#V4.32_Platforms">Platforms</a>,
- <a href="#V4.32_Fonts">Fonts</a>,
- <a href="#V4.32_Interpreter">Interpreter</a>,
- <a href="#V4.32_Library">Library</a>
- </ul>
- <li><a href="#Version4.31">Version 4.31 (limited) (10/27/96)</a>
- <ul>
- <li><a href="#V4.31_Documentation">Documentation</a>,
- <a href="#V4.31_Procedures">Procedures</a>,
- <a href="#V4.31_Platforms">Platforms</a>,
- <a href="#V4.31_Interpreter">Interpreter</a>,
- <a href="#V4.31_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.31_Streams">Streams</a>,
- <a href="#V4.31_Library">Library</a>
- </ul>
- <li><a href="#Version4.30">Version 4.30 (limited) (10/23/96)</a>
- <ul>
- <li><a href="#V4.30_Documentation">Documentation</a>,
- <a href="#V4.30_Drivers">Drivers</a>,
- <a href="#V4.30_Platforms">Platforms</a>,
- <a href="#V4.30_Fonts">Fonts</a>,
- <a href="#V4.30_Interpreter">Interpreter</a>,
- <a href="#V4.30_Library">Library</a>
- </ul>
- <li><a href="#Version4.21">Version 4.21 (limited) (10/17/96)</a>
- <ul>
- <li><a href="#V4.21_Documentation">Documentation</a>,
- <a href="#V4.21_Procedures">Procedures</a>,
- <a href="#V4.21_Drivers">Drivers</a>,
- <a href="#V4.21_Platforms">Platforms</a>,
- <a href="#V4.21_Fonts">Fonts</a>,
- <a href="#V4.21_Interpreter">Interpreter</a>,
- <a href="#V4.21_Library">Library</a>
- </ul>
- <li><a href="#Version4.20">Version 4.20 (limited) (10/13/96)</a>
- <ul>
- <li><a href="#V4.20_Documentation">Documentation</a>,
- <a href="#V4.20_Procedures">Procedures</a>,
- <a href="#V4.20_Utilities">Utilities</a>,
- <a href="#V4.20_Drivers">Drivers</a>,
- <a href="#V4.20_Interpreter">Interpreter</a>,
- <a href="#V4.20_Library">Library</a>
- </ul>
- <li><a href="#Version4.10">Version 4.10 (limited) (9/25/96)</a>
- <ul>
- <li><a href="#V4.10_Documentation">Documentation</a>,
- <a href="#V4.10_Utilities">Utilities</a>,
- <a href="#V4.10_Drivers">Drivers</a>,
- <a href="#V4.10_Interpreter">Interpreter</a>,
- <a href="#V4.10_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.10_Library">Library</a>
- </ul>
- <li><a href="#Version4.03">Version 4.03 (9/23/96)</a>
- <ul>
- <li><a href="#V4.03_Documentation">Documentation</a>,
- <a href="#V4.03_Procedures">Procedures</a>,
- <a href="#V4.03_Drivers">Drivers</a>,
- <a href="#V4.03_Fonts">Fonts</a>,
- <a href="#V4.03_Streams">Streams</a>
- </ul>
- <li><a href="#Version4.02">Version 4.02 (9/19/96)</a>
- <ul>
- <li><a href="#V4.02_Documentation">Documentation</a>,
- <a href="#V4.02_Procedures">Procedures</a>,
- <a href="#V4.02_Utilities">Utilities</a>,
- <a href="#V4.02_Drivers">Drivers</a>,
- <a href="#V4.02_Platforms">Platforms</a>,
- <a href="#V4.02_Interpreter">Interpreter</a>,
- <a href="#V4.02_Interpreter_PDF">Interpreter (PDF)</a>,
- <a href="#V4.02_Streams">Streams</a>,
- <a href="#V4.02_Library">Library</a>
- </ul>
- <li><a href="#Version4.01">Version 4.01 (7/10/96)</a>
- <ul>
- <li><a href="#V4.01_Documentation">Documentation</a>,
- <a href="#V4.01_Procedures">Procedures</a>,
- <a href="#V4.01_Utilities">Utilities</a>,
- <a href="#V4.01_Platforms">Platforms</a>,
- <a href="#V4.01_Platforms">Platforms</a>,
- <a href="#V4.01_Interpreter">Interpreter</a>,
- <a href="#V4.01_Library">Library</a>
- </ul>
- <li><a href="#Version4.0">Version 4.0 (6/28/96)</a>
- <ul>
- <li><a href="#V4.0_Documentation">Documentation</a>,
- <a href="#V4.0_Procedures">Procedures</a>,
- <a href="#V4.0_Utilities">Utilities</a>,
- <a href="#V4.0_Drivers">Drivers</a>,
- <a href="#V4.0_Platforms">Platforms</a>,
- <a href="#V4.0_Interpreter">Interpreter</a>,
- <a href="#V4.0_Streams">Streams</a>,
- <a href="#V4.0_Library">Library</a>
- </ul>
- </ul></blockquote>
- <!-- [1.2 end table of contents] =========================================== -->
- <!-- [1.3 begin hint] ====================================================== -->
- <p>
- This document is a history of Ghostscript releases numbered 4.n. For more
- recent changes, see the the other history documents and, for the latest
- versions, the news:
- <blockquote>
- <a href="News.htm">News</a><br>
- History of Ghostscript versions 4.n (this document)<br>
- <a href="History3.htm">History of Ghostscript versions 3.n</a><br>
- <a href="History2.htm">History of Ghostscript versions 2.n</a><br>
- <a href="History1.htm">History of Ghostscript versions 1.n</a>
- </blockquote>
- <p>For other information, see the <a href="Readme.htm">Ghostscript
- overview</a>.
- <!-- [1.3 end hint] ======================================================== -->
- <hr>
- <!-- [1.0 end visible header] ============================================== -->
- <h2><a name="Version4.81"></a>Version 4.81 (6/1/97)</h2>
- <p>
- This is a last-minute set of bug fixes before the 5.0 release.
- <h3><a name="V4.81_Documentation"></a>Documentation</h3><pre>
- Adds some overlooked helpers to the list. (helpers.txt)
- </pre><h3><a name="V4.81_Procedures"></a>Procedures</h3><pre>
- Makes a distinction between 2-part and 3-digit version numbers.
- (version.mak, vms.mak)
- </pre><h3><a name="V4.81_Utilities"></a>Utilities</h3><pre>
- Develops the Type 1 to CFF converter a little further; it is still NOT
- USABLE. (t1tot2.ps)
- Removes the pstoppm.ps script, since the p*m drivers supersede it.
- (pstoppm.ps, unix-end.mak)
- </pre><h3><a name="V4.81_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The PDF writer sometimes omitted an ET command before setting the
- clip path. (gdevpdf.c)
- - The PDF writer didn't initialize the "vector" state, leading to
- some redundant output (performance bug only). (gdevpdf.c)
- - The PDF writer wrote clip paths even when they included the entire
- page (performance bug only). (gdevpdf.c)
- Changes the PDF writer so that it recognizes not only the 14 built-in fonts
- but any font with the same UniqueID and metrics. This covers some common
- cases of re-registering a font with a variant Encoding. (gs_pdfwr.ps)
- </pre><h3><a name="V4.81_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - SEARCH_HERE_FIRST was accidentally set to 0 on MS Windows
- platforms. (bcwin32.mak, msvc4.mak, msvc5.mak, watcw32.mak)
- Adds code to remove "" around arguments in the command line passed to
- WinMain (MS Windows platforms). (dwmain.cpp, dwmainc.cpp)
- </pre><h3><a name="V4.81_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - setsystemparams was broken. (gs_lev2.ps)
- - restore was broken if -dNOBIND was invoked. (gs_dps1.ps)
- - deviceinfo returned much more information than it should.
- (gs_dps.ps)
- - The fix for the default EndPage procedures not popping their page
- count operand from the stack was wrong. (gs_init.ps, gs_setpd.ps)
- </pre><h3><a name="V4.81_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The saved character origin took the translation component of the
- FontMatrix into account, which caused charpath on fonts with non-zero
- translation in the FontMatrix to produce incorrect results. (gschar.c)
- Removes incorrect access attributes on a couple of files. (gdevpdfm.c,
- gxclist.h)
- </pre>
- <h2><a name="Version4.80"></a>Version 4.80 (limited) (5/28/97)</h2>
- <p>
- This is the candidate fileset for the 5.0 release.
- <h3><a name="V4.80_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The one-line description of the color image rendering module was
- incorrect. (gximage3.c)
- - Some of the VMS documentation was out of date. (make.txt,
- use.txt)
- - The description of the file name separator for -sFONTMAP= was
- wrong. (use.txt)
- - PSFile was misspelled PSfile. (use.txt)
- - There were some minor typos. (gstype1.h)
- - The build instructions had a lot of obsolete information for PC
- environments, and didn't cover Microsoft Visual C++. (make.txt)
- Explains that -sPAPERSIZE= only specifies the default papersize, and that
- forcing a particular paper size also requires -dFIXEDMEDIA. (use.txt)
- Adds information about building with GNU make on OpenVMS. (make.txt)
- Clarifies the meaning of EOFC for streams. (strimpl.h)
- Documents the new dictionary argument for the eexecDecode filter.
- (language.doc)
- </pre><h3><a name="V4.80_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - gs_epsf.ps didn't get installed on Unix systems. (unix-end.mak)
- - The code wouldn't build with libpng 0.95b. (libpng.mak)
- - One of the VMS scripts used CC_QUAL instead of CC_DEF.
- (vms-cc.mak)
- - version.mak wasn't included in a dependency list. (unix-end.mak)
- Brings the VMS DCL script up to date again (for the last time, we hope).
- (vms.mak)
- Modifies all platform-independent uses of upper-case command line arguments
- to deal properly with VMS, where the shell converts all command line
- arguments to lower case, without requiring quotation. (devs.mak, gs.mak,
- int.mak, lib.mak, zlib.mak)
- Moves the compilation rules for the third-party libraries into gs.mak, so
- they can be used to compile the callers as well. (gs.mak, jpeg.mak,
- libpng.mak, zlib.mak)
- Adds a set of files that allow building on OpenVMS using GNU make (slightly
- patched). The timing on this is unfortunate, but we've wanted this for a
- very long time. NOTE: be sure to look in the OpenVMS section of make.txt
- for information on patching GNU make. (openvms.mak, append_l.com,
- rm_all.com, rm_one.com, copy_one.com)
- Adds new makefiles for building on 32-bit Windows with Borland, Watcom, and
- Microsoft Visual C++ (versions 4.x and 5.0). The timing on this is
- unfortunate too, but having this capability is so important that we couldn't
- pass it up. (bcwin32.mak, msvc4.mak, msvc5.mak, msvccom.mak, watcw32.mak,
- wincom.mak)
- Removes now-obsolete makefiles. (dwcommon.mak, msc.mak, msvcwint.mak,
- mscbegin.bat, watcwin.mak)
- </pre><h3><a name="V4.80_Utilities"></a>Utilities</h3><pre>
- Extends echogs to work in VMS environments, where the shell converts all
- command line arguments to lower case, without requiring quotation.
- (echogs.c)
- Adds a sketch of a utility for converting Type 1 fonts to CFF. DOESN'T WORK
- YET: DON'T TRY TO USE IT. (t1tot2.ps, type1ops.ps, writecff.ps)
- </pre><h3><a name="V4.80_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A type declaration wasn't compatible with libpng 0.95.
- (gdevpng.c)
- - kshow wasn't handled properly when producing PDF output.
- (gs_pdfwr.ps)
- - The PDF writer put out unnecessary ET/BT commands. (gdevpdfx.h,
- gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
- - The PCL XL writer put out real numbers for the miter limit, which
- are not allowed (!). (gdevpx.c)
- - The PCL XL writer didn't combine successive curves into a single
- curve command (performance bug only). (gdevpx.c)
- - The PCL XL writer could write uncompressed images with a tag
- saying they were compressed. (gdevpx.c)
- - The PCL XL writer always selected U.S. letter paper, rather than
- the requested size. (gdevpxen.h, gdevpx.c)
- - The PCL XL writer reselected the paper size on every page, even if
- it hadn't changed. (gdevpx.c)
- - The PCL XL writer always used shorts for line and curve
- coordinates, rather than using bytes when possible (performance bug only).
- (gdevpx.c)
- - Because of a compiler bug, a macro with argument conflicted with a
- variable name. (gdevpdfx.h, gdevpdf.c)
- - A picky compiler objected to an extern for an undefined structure.
- (gdevpsdf.h)
- - The PDF writer sometimes didn't reset the clipping path, causing
- bitmaps or rectangle to disappear. (gdevpdf.c, gdevpdfi.c)
- - The PDF writer produced invalid output if the first page was
- blank. (gdevpdf.c)
- - The AutoRotatePages parameter for PostScript and PDF output (which
- doesn't actually do anything yet) incorrectly expected a Boolean value
- rather than an enumeration. (gdevpsdf.h, gdevpsdf.c)
- - Some places returned -1 for an error without calling gs_note_error
- or gs_return_error. (gdevm1.c, gdevmpla.c, gdevrun.c, gxclpath.c)
- - The PCL XL writer produced extremely large files because it didn't
- download character bitmaps. (OK, this isn't really a bug fix.) (gdevpx.c)
- - The forwarding implementation of get_page_device didn't do the
- right thing. (gdevnfwd.c)
- - The x11alpha device didn't implement get_params properly, leading
- to anomalous behavior. (gdevxalt.c)
- - The PDF writer produced incorrect Count values for outlines: the
- count only counted descendant leaves, omitting intermediate nodes.
- (gdevpdfm.c)
- Removes an assumption that images have at most 4 components. (gdevpdfi.c)
- Adds an x11gray2 device, primarily for debugging. (devs.mak, gdevxalt.c)
- Updates the unified printer driver with a newer version. (uninfo.ps,
- gdevupd.c, *.upp)
- </pre><h3><a name="V4.80_Platforms"></a>Platforms</h3><pre>
- Adds the P*M devices and the X11 devices (commented out) to the OS/2
- makefile. (os2.mak)
- Updates the MS Windows platform to be compatible with Microsoft Visual C++
- (as well as Watcom and Borland compilers). (gsdll32.def, gdevmswn.h,
- gp_mswin.h, gsdll.h, dwimg.cpp, dwmain.cpp, dwmainc.cpp, dwtext.cpp,
- gdevwdib.c, gdevwprn.c, gdevwpr2.c, gp_mswin.c, gsdll.c)
- </pre><h3><a name="V4.80_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - Certain synthetic fonts incorrectly were loaded into local rather
- than global VM. (These fonts are not part of the standard distribution.)
- (gs_fonts.ps, gs_pfile.ps, *ss*.ps)
- </pre><h3><a name="V4.80_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The FAKEFONTS scan could leave junk on the stack. (gs_fonts.ps)
- - Dynamically loading known encodings on demand left junk on the
- stack, causing a typecheck error. (gs_res.ps)
- - Some 'static' declarations were missing (gcc lossage). (iname.c)
- - Some internal operators didn't have names, leading to unhelpful
- error printout. (zfileio.c)
- - The resource "operators" didn't always restore the stacks properly
- on an error. (gs_res.ps)
- - The CID font code left a garbage value on the stack during
- loading. (gs_cidfn.ps)
- - The defineresource implementation for built-in resources like
- FMapType didn't leave the resource "value" on the stack. (gs_res.ps)
- - If an operator defined by a procedure was bound into a packed
- procedure, the stack-protection feature wasn't effective. (interp.c)
- - findfont didn't restore the stack if it failed. (gs_res.ps)
- - The showpage count passed to the BeginPage and EndPage procedures
- was incremented only if a page was printed, rather than for every invocation
- of showpage. (gs_init.ps, zdevice2.c)
- - The default EndPage procedures didn't pop their page count operand
- from the stack. (gs_init.ps, gs_setpd.ps)
- - If the argument of findfont wasn't a name or a string, and no font
- with that key had been registered, an error occurred. (gs_fonts.ps,
- gs_res.ps)
- Updates most of the remaining pseudo-operators to take advantage of stack
- protection. (gs_btokn.ps, gs_cmap.ps, gs_dps1.ps, gs_dps2.ps, gs_fonts.ps,
- gs_lev2.ps, gs_pdfwr.ps)
- Splits the image operators into a separate file from the path painting
- operators. (This should have been done a long time ago.) (iimage.h,
- zimage.c, zpaint.c)
- Adds more of the implementation of the NeXT alpha and compositing
- operations, under an #ifdef DPNEXT. (iimage.h, zcolor1.c, zdpnext.c,
- zimage.c)
- Adds more of the implementation of DPS contexts. These are still not
- usable. (icontext.h, icontext.c, zcontext.c, zmath.c)
- Changes the help message to describe -dBATCH instead of -c quit.
- (imainarg.c)
- Recognizes the dictionary argument for the eexecDecode filter. (zmisc1.c)
- </pre><h3><a name="V4.80_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The tracing message when starting to decode 1-D fax data reported
- the run_color incorrectly. (scfd.c)
- - In the CCITTFaxDecode filter, if a buffer boundary fell between a
- makeup code and a final zero-length termination code, an ioerror could
- occur. (scfd.c)
- - Per Adobe, in the CCITTFaxDecode filter, EndOfBlock = true should
- cause Rows to be ignored. (scfd.c)
- - If an output stream returned EOFC, an infinite loop might result.
- This problem (and the fix) are in the same fragile code as the EOD fix in
- 4.74, and we may again have introduced a new bug. (stream.c)
- Changes the eexecDecode filter so that instead of a number, it can take a
- dictionary with two keys, seed and lenIV. (Having eexecDecode skip initial
- bytes at all was a design bug that is too late to fix.) (sfilter.h,
- seexec.c)
- </pre><h3><a name="V4.80_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The default mapping from RGB+alpha to RGB didn't lighten
- (premultiply) the color according to the alpha value. (gxcmap.c)
- - The angle error metric for rational tangent screen parameters
- should be simply the difference in angle, not a ratio. (gshtscr.c)
- - gs_setcolorscreen and gs_sethalftone didn't initialize an
- allocator pointer, leading to memory access errors. (gsht1.c)
- - If a banded image was clipped, an invalid band list could be
- produced. (gxclimag.c)
- - A picky compiler wouldn't allow an enum to be &&'ed with a
- boolean. (gschar.c)
- - A short-sighted compiler didn't allow the use of actual procedure
- names (as opposed to procedure variables) in a conditional expression.
- (gxfill.c)
- - A compiler objected to a name longer than 31 characters. (gzht.h,
- gsht.c, gxclread.c)
- - The height computations for banded images were not consistent,
- possibly leading to invalid band lists. (gxclimag.c)
- - copypage didn't reset the band writer and band reader bookkeeping
- consistently, leading to incorrect output and possible errors. (gxcldev.h,
- gxclist.c, gxclread.c)
- - When banding, changing the halftone could lead to accessing memory
- after freeing it. (gxclread.c)
- - When using disk files for band storage, showpage didn't actually
- delete or truncate the band list file, possibly causing subsequent copypage
- operations to become confused. (gxclfile.c)
- - When banding, having more than one image operator in progress at a
- time confused the rasterizing pass and could produce arbitrary errors. From
- PostScript, this can only happen in the case of an image whose data source
- was a procedure-based stream that itself invoked an image operator: this is
- a senseless and perverse thing to do, but it shouldn't break the code (and a
- Genoa CET file actually does it). (gxclist.h, gxclimag.c, gxclist.c)
- - Some picky compilers objected to negating unsigned values.
- (gsuid.h, gsht.c, gsmemory.c, gxpcopy.c)
- - When banding, if a 90- or 270-degree rotated monobit image was
- clipped, invalid memory accesses could occur. (gximage.h, gximage1.c)
- - The showpage count passed to the BeginPage and EndPage procedures
- was incremented only if a page was printed, rather than for every invocation
- of showpage. Fixing this requires removing the incrementing of the count
- from the library level altogether. (gsdevice.c)
- - When rendering a subrectangle of an image, the X DDA was
- initialized incorrectly, causing possible errors. We think this only
- affected certain banded images. (gxdda.h)
- Adds a provision for images with an alpha component, under an #ifdef DPNEXT.
- ****** THE BANDING CODE HAS NOT BEEN UPDATED YET. ****** (gsiparam.h,
- gxcmap.h, gxdither.h, gximage.h, gsimage.c, gxclimag.c, gxclread.c,
- gxcmap.c, gximage.c, gximage3.c, gximage4.c ****** NOT DONE YET ******,
- gximage5.c)
- Adds a return_if_error macro to capture the common idiom of making a call
- and then returning its value if that value is negative (error). (gserror.h)
- </pre>
- <hr>
- <h2><a name="Version4.74"></a>Version 4.74 (limited) (5/5/97)</h2>
- <p>
- This fileset is supposed to fix all remaining errors reported by the Genoa
- CET, and is intended to be the last incremental test fileset before the 5.0
- release.
- <h3><a name="V4.74_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Mark procedures are *not* executed in the normal return case.
- (estack.h)
- - The line_params element of a gs_imager_state is *not* allocated
- separately. (gsstate.c)
- - The value passed to the PDF writer for text is a dictionary, not
- an array. (gdevpdft.c)
- Improves the documentation of gstate memory management. (gsstate.c)
- Documents end_status = EOFC for writing streams. (stream.h, strimpl.h)
- Clarifies memory management for halftones and device halftones. (gsht1.h,
- gxdht.h, gxht.h, gzht.h)
- Removes the "experimental" tag from the PostScript and EPS writers.
- (devs.mak)
- </pre><h3><a name="V4.74_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - The viewpcx utility scaled images improperly. (viewpcx.ps)
- - If a PDF file used F instead of f for filling a path, pdf2ps
- didn't output the fill operation. (pdf_base.ps)
- Changes the ps2pdf script so that, like pdf2ps, it allows debugging
- switches. (ps2pdf)
- </pre><h3><a name="V4.74_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The vgalib driver didn't clip monobit images properly.
- (gdevvglb.c)
- - The X driver asked for exposure events to be reported, but never
- read them, causing the event queue to grow indefinitely. (gdevxini.c)
- - The "vector" drivers and the PDF writer didn't properly keep track
- of whether the current clipping region was the default one. (gs_pdfwr.ps,
- gdevvec.h, gdevvec.c, gdevpdf.c, gdevpdft.c)
- - The PDF writer had word and character spacing interchanged.
- (gdevpdft.c)
- - The PDF writer scaled word and character spacing incorrectly.
- (gdevpdft.c)
- </pre><h3><a name="V4.74_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The user object operators didn't leave the stack in a clean state
- if they failed. (gs_dps2.ps)
- - UserObjects wasn't actually defined. (gs_dps2.ps)
- - deviceinfo and set/currenthalftonephase were defined even if the
- dps feature wasn't selected. (int.mak, gs_dps.ps, gs_dps1.ps, gs_lev2.ps,
- zdps.c, zdps1.c)
- - The dps feature didn't automatically include the level2 feature,
- which it needs. (int.mak)
- - The DPS user names mechanism didn't work, since the user names
- array was subject to save and restore. (It still doesn't really work --
- there is no provision for expanding the user names array, which is created
- with length 0.) (gs_btokn.ps, ivmspace.h, zbseq.c, zdps.c)
- - The DPS context operators didn't do all the necessary error
- checking. (zcontext.c)
- - The debugging printout for names printed the name index in hex
- without identifying it as such. (idebug.c)
- - Adding the first non-name key (or name key with a name index
- beyond 4K) to a dictionary that had any deleted entries could cause some
- entries to apparently disappear. (idict.c)
- - If a sub-table of the name table was freed during garbage
- collection, memory could be left in an inconsistent state. (iname.c, igc.c)
- - findfont didn't restore the stacks reliably if an error occurred.
- (gs_fonts.ps)
- - definefont with an invalid Type 0 font sometimes added a FID entry
- (with a dangling pointer) if it failed. (Recovering properly from a VMerror
- during font creation would require a much more complicated fix than this,
- but since we expect a garbage collection to occur in that case, we aren't
- concerned about it.) (zfont0.c)
- - Reading parameter values from a dictionary could access beyond the
- end of the array that keeps track of which entries had been referenced.
- (idict.h, idict.c, iparam.c)
- - Halftone data was allocated in the current VM rather than in the
- same VM as the halftone dictionary or procedure. (Fixing this includes
- updating code as necessary for the change in halftone and device halftone
- allocation.) (iht.h, ivmspace.h, zht.c, zht1.c, zht2.c)
- - Closed non-executable files on the e-stack could cause a restore
- to be invalid. (zvmem.c)
- Adds skeleton code for the NeXT Display PostScript alpha and compositing
- operators. This is not ready for use yet! (errors.h, gs_dpnxt.ps,
- zdpsnext.c)
- Implements more of state saving and restoring for Display PostScript
- contexts. This is not ready for use yet either. (int.mak, icontext.h,
- istack.h, icontext.c, zcontext.c)
- Adds stub code for the Display PostScript view clip operators. (gs_dps.ps,
- zdps.c)
- Removes the obsolete PPM-writing operator. (int.mak, vms.mak, *.mak,
- zwppm.c)
- Makes the random number generator state public so it can be stored in the
- context state. (zmath.c)
- Changes the flag for forcing global garbage collection to a run-time
- variable, for debugging. (igc.c)
- Changes the handling of job control so that it doesn't use procedures that
- produce an execstackoverflow when being printed. (gs_init.ps)
- Updates code as necessary for the change in reference counting. (zcie.c,
- zcrd.c)
- Updates code as necessary for the change in off-stack gstate copying.
- (zdps1.c)
- Removes a small bit of obsolete code. (interp.c)
- </pre><h3><a name="V4.74_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - An output stream that was not the last one in a pipeline could
- incorrectly be asked to write its EOD marker more than once. (The fix is
- very fragile and may have introduced new bugs.) (stream.c)
- </pre><h3><a name="V4.74_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The gx_device_halftone_release procedure was declared in two
- different header files. (gzht.h)
- - Off-stack copying of gstates could lead to a situation where
- different parts of a single gstate were owned by different allocators; this
- could cause them to be freed improperly, corrupting memory. We fixed this
- partly by making the mixed ownership situation work, and partly by copying
- more of the gstate when off-stack gstates are involved. Unfortunately, the
- fixes are subtle and may have introduced new bugs. (gsstate.h, gsht.c,
- gsht1.c, gspcolor.c, gsstate.c)
- - If an error occurred while creating a Pattern instance, the
- partially initialized instance structure wasn't freed. (gspcolor.c)
- - Halftones and device halftones didn't allocate their clones or
- their subsidiary structures with the correct allocator. (gsht.c, gsht1.c)
- - The error statement when allocating a reference-counted object had
- to be a control transfer. (gsrefct.h)
- - Copying gstates incorrectly copied the memory and saved pointers,
- and the pointer to the dash pattern. (gsstate.c)
- - Flatness values less than 0.5 produced far more line segments than
- necessary (roughly the square of the required number). Fixing this may have
- bad effects on character quality -- this remains to be seen. (gxpflat.c)
- - An error during installation of a halftone could leave things in
- an inconsistent state. (gsht.c)
- - The API didn't provide enough flexibility with respect to memory
- management for halftones, or guarantee consistent allocation of a halftone
- and its subelements. (gsht1.h, gsht.c, gsht1.c, gshtscr.c)
- - Releasing a path didn't clear enough pointers to ensure clean
- garbage collection. (gxpath.c)
- - Finalizing or discarding a (cached) scaled font didn't properly
- unlink it from the scaled_fonts list. (gsfont.c)
- - Invoking an image operator within the BuildChar procedure for a
- charpath caused an infinite loop. (gsimage.c)
- - The bookkeeping for the scaled font cache was incorrect: the count
- didn't always get decremented when a scaled font was freed. (gsfont.c)
- - "High level" masked images were written incorrectly in the band
- list as black-and-white images. (gxclimag.c)
- - For "high level" images with fewer than 4 samples per pixel,
- non-standard Decode values were written incorrectly in the band list.
- (gxclimag.c)
- - The color wasn't set correctly for "high level" masked images.
- (gxclimag.c)
- - The fastest case of monobit image rendering could get a memory
- access error if the image lay partly outside the page. (gximage1.c)
- - Clipping with an empty path was a no-op, rather than clipping out
- everything. (gxcpath.c)
- Makes reference-counted objects remember which allocator owns them: this
- entails a NON-BACKWARD-COMPATIBLE change to some of the macros for reference
- counting. This was necessary to fix the off-stack gstate copying problem.
- (gsrefct.h, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscsepr.c,
- gsstate.c, gxclread.c)
- Refactors the unpacking of image data, to make unpacking available as a
- general facility. (gximage.h, gxsample.h, gximage.c, gximage0.c,
- gximage1.c, gximage4.c, gxsample.c)
- Enhances -Z? so that before freeing an object, it checks that the object was
- owned by the correct allocator. (gsalloc.c)
- </pre>
- <h2><a name="Version4.73"></a>Version 4.73 (limited) (4/19/97)</h2>
- <p>
- This is an incremental bug fix release made primarily to provide a
- synchronization point for an upcoming trip.
- <h3><a name="V4.73_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - A reference to the uniprint documentation was incorrect.
- (current.txt)
- - -Olimit 1000 is not enough now for DEC Ultrix, 1200 is required;
- this is also required for SGI IRIX. (make.txt)
- Adds argument/result comments to all the operators defined in gs_lev2.ps.
- (Eventually we will do this for all operators defined as PostScript
- procedures.) (gs_lev2.ps)
- </pre><h3><a name="V4.73_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The makefiles didn't provide a default value for GCONFIG_EXTRAS.
- (gs.mak)
- </pre><h3><a name="V4.73_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - pdf2ps didn't work with TrueType or compressed Type 1 fonts.
- (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
- </pre><h3><a name="V4.73_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A cast from byte to char was omitted. (gdevpdfm.c)
- </pre><h3><a name="V4.73_Platforms"></a>Platforms</h3><pre>
- Updates the VMS script (again). (vms.mak)
- </pre><h3><a name="V4.73_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - A module that used strlen didn't include string_.h. (zdevice.c)
- - Because of some bad PostScript code in FrameMaker output, identity
- rather than unity black generation and undercolor removal functions are
- required on black-and-white devices. (gs_init.ps)
- - A harmless internal error during initialization left bogus
- information in $error. (gs_cidfn.ps)
- - startjob didn't clear the execution stack. Fixing this required
- NON-BACKWARD-COMPATIBLE changes to the internal operators .instopped, .stop,
- and .stopped, which are not supposed to be used by any external code.
- (startjob will still give errors if executed in a file that isn't being
- piped from stdin; this will take longer to fix.) (gs_init.ps, gs_lev2.ps,
- iref.h, imain.c, interp.c, zcontrol.c, zfile.c)
- Adds a new .execn operator, part of the startjob changes, that allows
- pushing multiple items on the exec stack. Eventually this will allow us to
- get rid of many dynamically created closures. (zcontrol.c)
- </pre><h3><a name="V4.73_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Landscape-mode PDF files weren't rotated properly. (gs_pdf.ps,
- pdf_main.ps)
- Makes the default PDF configuration notify users more informatively when
- encountering an encrypted file. (pdf_sec.ps)
- </pre><h3><a name="V4.73_Streams"></a>Streams</h3><pre>
- Makes the RunLengthEncode filter always generate optimally compressed
- output. We did this because we thought one of the Genoa CET files loops
- forever if this is not the case; but we were wrong. (srle.c)
- </pre><h3><a name="V4.73_Library"></a>Library</h3><pre>
- Fixes bugs:
- - If one coordinate of a position or distance overflowed the
- internal representable range, the other coordinate became garbage. (bug
- introduced in 4.70) (gspath.c)
- - The bounding box computation for strokes was slightly too large
- (sometimes much too large). (gxpaint.h, gdevbbox.c, gxclpath.c, gxstroke.c)
- Adds (under an #if 0) an experimental alternate halftone cell choice
- algorithm. (gshtscr.c)
- Adds a better comment to a particularly obscure line of C code.
- (gxclimag.c)
- </pre>
- <h2><a name="Version4.72"></a>Version 4.72 (limited) (4/14/97)</h2>
- <p>
- This is another bug fix release, motivated mostly by Genoa testing. It also
- updates the new uniprint driver with a major revision, and upgrades CFF
- support a little bit.
- <h3><a name="V4.72_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - -dNOGC only disables default automatic garbage collection, not all
- garbage collection. (use.txt)
- - Apparently a different set of flags is needed for newer H-P
- compilers. (make.txt)
- Replaces the tiny FAQ with a pointer to the on-line FAQ. (use.txt)
- Updates the documentation for the uniprint driver. (devices.txt)
- Clarifies the fact that Ghostscript reads Fontmap files from *all*
- directories in the search list. (use.txt)
- Notes that building on Linux may require SM and ICE in the list of X
- libraries. (make.txt)
- </pre><h3><a name="V4.72_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - An -include type42 was omitted from the level2 module description.
- (int.mak)
- - A mention of $(ECHOGS) in the rule for sfile should have been
- $(ECHOGS_XE). (lib.mak)
- - The pcx2up sample device should have been put in devs.mak rather
- than lib.mak. (devs.mak, lib.mak)
- - scanchar.h and scantab.c belong in the library, not the
- interpreter. (devs.mak, int.mak, lib.mak)
- - Some _h definitions were used before being defined, or weren't
- defined at all. (devs.mak, lib.mak)
- - The JPEG driver was missing a dependency. (devs.mak)
- - The PDF writer was missing a dependency. (devs.mak)
- - Building Level 1 systems was no longer possible. (int.mak)
- Updates the VMS build scripts. (vms.mak, vms-decc.mak)
- Adds *.upp to the list of files installed under Unix. (unix-end.mak)
- Adds rules to the Unix makefiles to build two library files: gs.a,
- consisting of the entire PostScript/PDF interpreter lacking only gs.c, and
- gslib.a, consisting of the graphics library without the gslib.c test driver.
- (ansihead.mak, cc-head.mak, gcc-head.mak, unixtail.mak)
- </pre><h3><a name="V4.72_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The PS/EPS writers could generate a reference to an undefined
- name. (gdevps.c)
- - The PDF writer produced incorrect output for multi-level outlines.
- (gdevpdfm.c)
- - The PDF writer didn't convert /Action to /A, and /Action/Subtype
- to /S, in Annot dictionaries. (gdevpdfm.c)
- - The PDF writer didn't work in Level 1 systems. (gs_pdfwr.ps)
- - The PDF writer didn't transform /Rect and /R values to current
- user coordinates. (gs_pdfwr.ps, gdevpdfx.h, gdevpdfm.c)
- - The PNG writer could refer to the 3 predefined stdio files even in
- environments where this was undesirable. (gdevpng.c)
- - The PDF writer had a compiled-in limit of 100 pages of output.
- (gdevpdfx.h, gdevpdf.c)
- Updates the uniprint driver with a major revision that uses device
- parameters that can be set from the command line, rather than PostScript
- code, for configuration choices. (gdevupd.c, *.upp)
- </pre><h3><a name="V4.72_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - gp_enumerate_files_next had no way to return an error. (gp.h,
- gp_dosfe.c, gp_ntfs.c, gp_os2.c, gp_unifs.c, gp_vms.c) ****** NOT
- IMPLEMENTED YET ******
- - On the Watcom platform, CPU_TYPE >= 486 didn't automatically set
- FPU_TYPE to 387. (wccommon.mak)
- </pre><h3><a name="V4.72_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Caching the current device in userdict could create dangling
- references. (gs_init.ps, gs_pdfwr.ps, zdevice.c)
- - If an error occurred in a BuildChar or BuildGlyph procedure, the
- graphics state stack wasn't restored. (ichar.h, zchar.c, zchar2.c)
- - There was an obsolete check for a structure when cleaning up after
- a show operator. (zchar.c)
- - Attempting to show a character with no associated glyph in a Type
- 3 font with a BuildGlyph procedure caused an error. (zchar.c)
- - noaccess on a read-only dictionary didn't give an error.
- (ztype.c)
- - The dictionary passed to a Pattern's PaintProc was the original
- template, not the copy made by makepattern. (gs_lev2.ps)
- - Invalid font parameters could result in partially constructed
- fonts, which caused problems for restore. (zfont0.c, zfont2.c)
- - Files run under job control caused an error when terminating.
- (gs_init.ps)
- - setpagedevice didn't protect itself against malfunctioning
- BeginPage or EndPage procedures. (The protection is still not perfect.)
- (gs_setpd.ps)
- - .type42execchar called font_param redundantly. (zchar42.c)
- - The font operators didn't protect themselves well enough against
- bogus font dictionaries. (zfont.c, zfont0.c)
- - If an error occurred within a stringwidth, the graphics state
- stack wasn't restored properly. (zchar.c)
- - If an error occurred within the PaintProc of a form, the graphics
- state stack was left with an extra entry. (gs_lev2.ps)
- - Registering a font under a second name could corrupt data
- structures. (zfont2.c)
- - Different scalings of the same font should have "equal" fontIDs,
- to match the Adobe implementations. (iutil.c)
- - Errors detected by PostScript code during initialization either
- allowed execution to continue or produced a hex stack dump, instead of just
- producing a message and exiting. (interp.c)
- - The memory validator didn't validate chunks at previous save
- levels. (ilocate.c)
- - The Level 1 size of systemdict was too small. (iinit.c)
- - Attempting to define a Category resource in local VM gave a
- typecheck error rather than an invalidaccess. (gs_res.ps)
- - Building Level 1 systems was no longer possible. (zusparam.c)
- Rearranges the interpreter code slightly so that all operator invocations go
- through a single procedure when debugging. (interp.c)
- Adds a -K<numK> switch to limit the total amount of memory that Ghostscript
- can acquire. (imainarg.c)
- Makes the memory validator check packed refs more carefully. (ilocate.c)
- Makes the memory validator check explicitly for pointers to freed objects.
- (igc.c, ilocate.c)
- Makes the memory validator check dictionaries more carefully. (ilocate.c)
- Makes the memory validator check refs embedded in structures. (ilocate.c)
- Adds a debugging option that bypasses the garbage collector entirely.
- (igc.c)
- Adds debugging options to validate memory before/after save/restore.
- (zvmem.c)
- Removes the patch for the uniprint driver, since it is no longer needed.
- (gs_init.ps)
- Implements real-number operands in CFF fonts. (gs_cff.ps)
- Implements non-default charsets in CFF fonts. (gs_cff.ps)
- </pre><h3><a name="V4.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - The PDF 1.2 "marked content" operators weren't defined.
- (pdf_main.ps)
- - Streams with binary data whose first character was an EOL (\n)
- didn't parse properly. Unfortunately, the way we fixed this may break some
- other files. (pdf_base.ps)
- - PDF 1.2 #nn escape syntax in names wasn't recognized. ****** This
- is implemented with an inefficient hack that should be moved down into C.
- However, I don't want to risk introducing new bugs during the beta test
- period. ****** (pdf_base.ps)
- - The interpreter had a limit of 64K objects. Removing this limit
- required changing a basic data structure -- admittedly a risky thing to do
- during beta test. (pdf_base.ps, pdf_main.ps)
- - TJ didn't multiply the offsets by the font size, causing incorrect
- character positioning. (gs_pdf.ps)
- </pre><h3><a name="V4.72_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The ASCIIHexDecode filter read an extra character in case of
- error. (sstring.c)
- Adds more tracing output to the CCITTFaxDecode stream. (scfd.c)
- </pre><h3><a name="V4.72_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The allocator client name for rendering bitmap patterns was
- incorrect. (Only affects tracing output.) (gspcolor.c)
- - The check for exceeding the overall allocation limit was
- incorrect, because of unsigned arithmetic. (Only affects limitation of
- total allocation, which is only used for debugging and benchmarking.)
- (gsmemory.c)
- - The 0'th component of colored screens wasn't passed through the
- band list, possibly causing access errors when rasterizing. (gxclimag.c,
- gxclread.c)
- - setbbox could get an overflow without detecting it. (gsdps1.c)
- - Images with only one component but MultipleDataSources = true
- could cause a memory access error. (gximage.c)
- - The buffer for unpacking 12-bit-per-sample image data was too
- small, causing memory corruption. (gximage.c)
- - 12-bit-per-sample images with multiple data sources sometimes
- didn't pass correct pointers to image_data. (gsimage.c)
- - If an image data stream reached EOF before supplying enough data
- for the entire image, memory corruption could occur. (zpaint.c)
- - When a device halftone was freed, some pointers in the halftone
- cache weren't cleared, leading to possible dangling references. (gsstate.c)
- - Invalid font parameters could result in partially constructed
- fonts, which caused problems for restore. (gxfont0.h, gsfont.c)
- - If an error occurred within a stringwidth, the graphics state
- stack wasn't restored properly. (gschar.c)
- - The (static) limit on the size of a command line argument was too
- small. (gsargs.h)
- - Building Level 1 systems was no longer possible. (gxdht.h,
- gsht.c, gsht1.c)
- - Truncation instead of rounding caused colors on gray-scale devices
- to come out very slightly too dark. (gxcmap.c)
- - The Decode mapping table constructed for images was slightly
- inaccurate for ranges other than [0 1] or [1 0]. (gximage.c)
- </pre>
- <h2><a name="Version4.71"></a>Version 4.71 (limited) (3/31/97)</h2>
- <p>
- This is a bug fix release during the beta test period.
- <h3><a name="V4.71_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - A larger value of -Olimit is now needed to optimize gxclread.c.
- (make.txt)
- - Some comments were incorrect. (gdevbbox.h, sfilter1.c)
- Updates the GPL with a newer version from FSF. (COPYLEFT)
- Notes that the gcc 2.7.x code generation bug is fixed in 2.7.2.1.
- (make.txt)
- </pre><h3><a name="V4.71_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Some streams required by high-level drivers were incorrectly
- grouped with the interpreter rather than the library. (int.mak, lib.mak)
- - The choice of implementation for file streams was buried in an
- obscure place, rather than being included in the configuration definitions
- at the head of each makefile. (We believe there are no more such buried
- parameters.) This involved a NON-BACKWARD-COMPATIBLE change in the way this
- choice was specified. (lib.mak, *.mak)
- - Some dependencies were missing. (lib.mak)
- </pre><h3><a name="V4.71_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A variable was used before being initialized, causing get_bits
- (and raster ops) to fail when using alternate X devices. (bug introduced in
- 4.70.) (gdevxalt.c)
- - Some 'private' declarations were omitted. (It is infuriating that
- gcc doesn't check for this!) (gdevps.c, gdevpx.c)
- - A few character strings were used as byte arrays without a cast.
- (gdevpx.c)
- - The EPS writer didn't write a correct bounding box, and didn't
- write it at the beginning of the file. (gdevvec.h, gsstruct.h, gdevps.c,
- gdevvec.c)
- - x_copy_color specified an incorrect (too large) image width.
- Apparently this only mattered because it could cause invalid memory
- accesses. (gdevx.c)
- - x_copy_mono also specified too large an image width. It's not
- clear this made any difference. (gdevx.c)
- - The default implementation of strip_copy_rop didn't clamp Y values
- to legal values for get_bits. (gdevmrop.c)
- </pre><h3><a name="V4.71_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Some initialization files prematurely switched the interpreter
- into Level 2 mode, causing some Level 2 operators not to be defined. (bug
- introduced in 4.60 or later.) (gs_cff.ps, gs_cidfn.ps, gs_cmap.ps,
- gs_init.ps, gs_res.ps)
- </pre><h3><a name="V4.71_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The choice of procedure names for the file-descriptor-based
- implementation of file streams was buried in a .c file, rather than being
- chosen in the makefile. (sfile.c[deleted], sfileno.c[deleted], sfxstdio.c,
- sfxfd.c, sfxboth.c)
- </pre><h3><a name="V4.71_Library"></a>Library</h3><pre>
- Fixes bugs:
- - rcurveto was broken -- it drew curves to random points. (bug
- introduced in 4.61.) (gspath.c)
- - A trailing comma in an enum definition upset some compilers. (bug
- introduced in 4.70.) (gstype1.h)
- - Type 1 fonts with hint replacement could produce anomalous or
- clipped output, or even missing lines. (Also cleans up some out-of-date
- formatting.) (gxtype1.h, gstype1.c, gxhint2.c)
- - Removes some conditionals for choosing between old and new
- algorithms. (gxhint3.c)
- - makebitmappattern required that the bitmap consist of only a
- single tile repetition. (gspcolor.c)
- - Some computations on RasterOps didn't take transparency into
- account properly. (gdevmrop.c)
- - The structure definition for imager and graphics states had an
- incorrect offset for line_params, causing the garbage collector not to mark
- or relocate dash patterns, possibly causing memory faults, FPEs, or invalid
- output. (bug introduced since 4.03.) (gsstate.c)
- - 'show' operators gave a limitcheck for unreasonable coordinates,
- even if limit clamping was enabled. (gschar.c)
- Implements banded filling and stroking with colored halftones, in addition
- to pure colors and binary halftones. Since we are in a beta test period,
- actual use of this feature (but *not* all the code implementing it) is
- disabled under an #ifdef FUTURE. (gsdcolor.h, gxcldev.h, gxclpath.h,
- gxdht.h, gxhttype.h, gsht.c, gxclimag.c, gxclpath.c, gxclread.c)
- </pre>
- <h2><a name="Version4.70"></a>Version 4.70 (limited) (3/26/97)</h2>
- <p>
- This fileset fixes the one outstanding compilation problem on PC platforms
- and the old problem of limitchecks for out-of-bounds coordinates, and adds a
- variety of new features, including the ability to save away the band lists
- for pages and rasterize them later and/or elsewhere in any order and
- combination. This is the first "serious beta" candidate for the next
- general release.
- <p>
- Fileset numbers 4.62 through 4.69 were skipped deliberately.
- <h3><a name="V4.70_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The list of special -d and -s switches was out of date. (use.txt)
- - The name of the zlibDecode filter was incorrectly written
- zlibEncode. (language.txt)
- Documents where to find out how to install gcc 2.7.x on SGI IRIX 6.x.
- (make.txt)
- Documents a makefile patch required on NeXTStep. (make.txt)
- Documents how to patch gcc to fix the AXP code generation bug. (make.txt)
- Adds documentation for the new unified printer driver. (devices.txt)
- </pre><h3><a name="V4.70_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - 'make distclean' didn't remove a couple of files. (gs.mak)
- - A library module didn't include a necessary dependency. (lib.mak)
- - A new .ps file wasn't installed properly. (unix-end.mak)
- - File write dates weren't updated properly on PC platforms, causing
- unnecessary rebuilding. (cp.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak,
- tccommon.mak, wccommon.mak, zlib.mak)
- - An unnecessary explicit compilation line for gdevcdj.c caused
- problems in the Mac environment. (devs.mak)
- - The VMS scripts were out of sync again. (vms.mak)
- - The VMS build scripts didn't include the new JPEG driver.
- (vms-*.mak)
- - A number of makefile macros were referenced before being defined.
- (devs.mak, lib.mak, int.mak, *.mak)
- - libpng.mak didn't work with PVERSION=90. (libpng.mak, zlib.mak)
- Separates install-scripts from install-exec and install-data.
- (unix-end.mak)
- Moves the definition of SEARCH_HERE_FIRST from iminst.h to the makefiles.
- (*.mak, iminst.h, iconf.c, imain.c)
- Adds a -dBATCH switch that causes Ghostscript to exit after processing the
- files named on the command line. (gs_init.ps)
- Adds the PostScript, EPS, and PCL XL writers, and the color and gray-scale
- JPEG drivers, to all Unix configurations. (ansihead.mak, cc-head.mak,
- gcc-head.mak)
- </pre><h3><a name="V4.70_Drivers"></a>Drivers</h3><pre>
- NOTE: because of a change in an internal interface (clist_output_page), the
- cp50 driver no longer works. This is a user-contributed driver for which we
- take no responsibility.
- Fixes bugs:
- - gdevcdj.c wasn't compatible with ansi2knr. (gdevcdj.c)
- - 'private' was omitted from some declarations. (gdevjpeg.c)
- - The PostScript writer didn't keep track of the current color
- properly. (gdevps.c)
- - RESOLUTION was misspelled in a header. (gdevbjc.h)
- - Some compilers objected to the use of a floating point initial
- resolution value. (gdevbjc.h)
- - Some compilers didn't allow static initialization of a union.
- (gsdcolor.h)
- - If a TIFF driver got an error when initializing the CCITTFax
- encoder, it returned a bogus error code. (gdevtfax.c)
- - The PDF writer produced incorrect output for Indexed color space
- images. (gdevpdfi.c)
- - For many fatal error conditions, the X driver called exit()
- instead of returning an error. (gdevx*.c)
- Adds new drivers:
- - epswrite, an EPS-writing driver (instead of making EPS output a
- parametric option of the PostScript-writing device). (devs.mak, gdevps.c)
- - pcxcmyk, a 4-bit CMYK PCX driver. This is probably only useful
- for debugging CMYK color rendering. (gdevpcx.c)
- - jpeggray, a JPEG driver that produces gray-scale rather than color
- output. Thanks to Tom Lane for contributing this. (gdevjpeg.c)
- - uniprint, a unified printer driver for a wide variety of inkjet
- printers. Thanks to Gunther Hess for contributing this. (gdevupd.c)
- Adds the resolution (pHYs) to the output of the PNG drivers. (gdevpng.c)
- Adds recognition of the ASCII85EncodePages parameter to the PostScript and
- EPS writers. (gdevps.c)
- Makes the new JPEG driver write a JFIF header, which contains the image
- resolution. (gdevjpeg.c)
- Changes the "vector" device support interface so relative movement can be
- detected easily. THIS IS STILL SUBJECT TO CHANGE WITHOUT NOTICE.
- (gdevvec.h, gdevpsdf.c, gdevps.c, gdevpx.c, gdevvec.c)
- Changes the PostScript, EPS, and PDF writers to recognize curves and lines
- that can be represented more efficiently. (gdevpsdf.h, gdevpsdf.c,
- gdevps.c)
- Adds a new parameter to the PDF writer, FirstObjectNumber. This defines the
- first object number that will be used in the output. The default, and
- minimum, value is 1; the maximum value is approximately 2^31. This is for
- the benefit of dvipdf; we don't expect it to be used otherwise. In fact,
- using it appears to produce files that Adobe Acrobat Reader won't accept,
- even though the files are perfectly compliant with the published PDF
- specification. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
- </pre><h3><a name="V4.70_Platforms"></a>Platforms</h3><pre>
- Removes the makefile for the 16-bit Borland C++ platform. This was the last
- supported 16-bit platform; we expect to gradually drop all 16-bit
- concessions from the code itself. (bcwin.mak)
- </pre><h3><a name="V4.70_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The initial size of systemdict was too small, causing the
- interpreter to slow down substantially. (iinit.c)
- - A library module depended on an interpreter module. (zcsindex.c)
- - A logically necessary (but accidentally always available) #include
- was missing. (ifont.h)
- Moves set/currentoverprint to a more appropriate module. (zcolor2.c,
- zcssepr.c)
- Changes the default transfer functions so that they do something reasonable
- when given operands outside the legal [0..1] range. We only do this to work
- around a bug in FrameMaker output, which uses the transfer function as the
- screen function (!). (gs_init.ps)
- Changes the CMap construction algorithm to use the new, more compact
- representation. (zfcmap.c)
- Adds support for Adobe's Compact Font Format. Many individual features are
- not implemented yet: see the comment in the source code for details.
- (gs_cff.ps)
- Adds support for Type 2 charstrings in Type 1 fonts. (ifont.h, zfont1.c)
- Changes the Type 1 character rendering operator for the library change in
- Type 1 fonts. (zchar1.c, zfont1.c)
- Initializes the graphics state limit clamp flag to true. (zgstate.c)
- Temporarily adds a configuration file for the new unified printer driver,
- and arranges for it to be read at startup. This arrangement will be
- replaced very soon by a different one based on command line parameters.
- (gs_init.ps, uniprint.ps)
- </pre><h3><a name="V4.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Adds support for Compact Font Format fonts. (pdf_font.ps)
- </pre><h3><a name="V4.70_Streams"></a>Streams</h3><pre>
- Adds a glue procedure needed for the new jpeggray driver. (sjpeg.h,
- sjpege.c)
- Removes the width limit of 32K in the CCITTFaxEncode filter. The new limit
- is absurdly large (about 50M). (scf.h, scfx.h, scfe.c)
- </pre><h3><a name="V4.70_Library"></a>Library</h3><pre>
- Fixes bugs:
- - A library module depended on an interpreter module. (gxcolor2.h,
- gscolor2.c)
- - When rendering a band, clipping was sometimes used when it wasn't
- necessary. (Performance only.) (gxclread.c)
- - Stroking didn't check the path against the device clipping box in
- the absence of an explicit (non-default) clipping path. (Performance only.)
- (gxstroke.c)
- - A reference to an opaque type upset a couple of compilers.
- (gxclread.c)
- - Negative 32-bit numbers in Type 1 fonts didn't work properly on
- 64-bit systems. (gstype1.c)
- - A logically necessary (but accidentally always available) #include
- was missing. (gxbitmap.h)
- - A header wasn't protected against double inclusion. (gxclist.h)
- - Clipping devices didn't store their actual width and height.
- (gxcpath.c)
- - The slow-case check for thin lines was incorrect. (gxstroke.c)
- - Images didn't compute their clipping boxes correctly if there
- wasn't an explicit clipping path. (This must be a very recent bug, since it
- creates an overflow condition that prevents monochrome images from being
- rendered at all.) (gximage.c)
- Moves set/currentoverprint to a more appropriate module. For clients of
- gs_set/currentoverprint, this is a NON-BACKWARD-COMPATIBLE CHANGE, since the
- header file is now separate. (gscolor2.h, gscsepr.h, gscolor2.c, gscsepr.c)
- Replace the MetroWerks work-around with a different, more general one.
- (gdevmem.h, gdevmem.c, gxdevice.h)
- Speeds up the Type 1 interpreter a little. (gstype1.c, gxhint3.c)
- Redesigns the internal representation of CMaps to be more space-efficient.
- (gxfcmap.h, gschar0.c, gsfcmap.c)
- Implements a facility for saving away pages and rendering them later.
- Currently this requires the pages to be represented as band lists on files,
- and only allows X translation when rendering. This involves adding the
- following new printer device parameters:
- BandHeight
- BandWidth
- BandBufferSpace
- Also changes the names of the printer device parameter elements from
- use_buffer_space to BufferSpace and from max_bitmap to MaxBitmap for
- consistency. (gdevprn.h, gxcldev.h, gxclio.h, gxclist.h, gxclmem.h,
- gxclpage.h, gxdevmem.h, gdevmem.c, gdevp2up.c, gdevprn.c, gxclmem.c,
- gxclpath.c, gxclread.c)
- Changes the band list implementation API to allow closing a file without
- deleting it, and to allow reopening an existing file. This is a
- NON-BACKWARD-COMPATIBLE change to a deep internal interface. (gxclio.h,
- gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
- Speeds up rendering of colored halftones, by recognizing cases where one or
- more planes don't actually require screening, unrolling a loop, and doing
- basic clipping before halftoning. (gxcht.c)
- Adds a graphics state parameter, gs_set/currentlimitclamp, that changes the
- handling of out-of-range coordinates to clamp them in a way that produces
- approximately the intended output most of the time, rather than causing a
- limitcheck. Currently this is only designed to work with the basic path
- construction operations ([r]moveto, [r]lineto, [r]curveto, closepath); it
- does not work with many other operations such as show, flattenpath or the
- rectangle operations. Note also that while currentpoint will return the
- correct (unclamped) value, reading out the path with pathforall will return
- clamped values. This involves NON-BACKWARD-COMPATIBLE changes to the path
- structure (but not to any public interfaces). (gxpath.h, gxtype1.h,
- gzpath.h, gzstate.h, gspath.c, gspath1.c, gsstate.c, gstype1.c, gxpaint.c,
- gxpath.c, gxpath2.c, gxpcopy.c)
- Adds support for Type 2 charstrings. Some features are not implemented yet:
- see gstype2.c for details. (gscrypt1.h, gstype1.h, gxfont1.h, gxop1.h,
- gxtype1.h, gstype1.c, gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
- </pre>
- <hr>
- <h2><a name="Version4.61"></a>Version 4.61 (limited) (3/13/97)</h2>
- <p>
- This fileset cleans up many compiler warnings. It adds support for
- CMap-encoded fonts, and a driver that writes JPEG images.
- <h3><a name="V4.61_Documentation"></a>Documentation</h3><pre>
- Corrects an error in the description of the internal CodeMap structure.
- (gs_cmap.ps)
- Documents the fact that the optimizer in gcc 2.7.2.1 is broken on AXP
- machines. (make.txt)
- Corrects the name of the .setglobal/.currentglobal procedures. (zvmem2.c)
- Updates current.txt in preparation for the release. (current.txt)
- </pre><h3><a name="V4.61_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The VMS script was out of date again. (vms.mak)
- - CIDFont support unnecessarily required composite font support.
- (int.mak)
- - CMap and CIDFont support had improper dependencies on
- initialization order. (lib.mak, int.mak)
- - Some dependencies were missing in the JPEG library code.
- (jpeg.mak)
- Adds the new JPEG driver to all standard configurations. (*.mak)
- </pre><h3><a name="V4.61_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A dependency was omitted from the makefile. (devs.mak, gdevps.c)
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code. (gdevpdfx.h, gdevbj10.c,
- gdevcdj.c, gdevpdfp.c, gdevstc.c)
- Adds a JPEG-writing driver. Currently this only produces RGB output and
- only has a QFactor parameter, but eventually it could take all the other
- parameters of the DCTEncode filter. (devs.mak, int.mak, lib.mak,
- gdevjpeg.c)
- Refactors the PDF and PostScript output drivers so that both of them
- understand all the relevant documented PDF distiller parameters. (The
- PostScript driver currently disregards nearly all of them.) (gdevpdfx.h,
- gdevpsdf.h, gdevvec.h, gdevpdf*.c, gdevps.c, gdevpsdf.c, gdevpx.c)
- </pre><h3><a name="V4.61_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The MetroWerks C compiler gave an inexplicable error on a
- particular initialization. (gdevmem.h, gdevmem.c)
- </pre><h3><a name="V4.61_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The insideness testing operators sometimes reported hits
- incorrectly. (zupath.c)
- - Mixed-type arithmetic used floats rather than doubles when
- converting integers, possibly leading to loss of precision. (zarith.c,
- zrelbit.c)
- - composefont was defined in a private dictionary, not in
- systemdict. (gs_cmap.ps)
- - composefont didn't work, for several different reasons.
- (gs_cmap.ps)
- - After a Type 1 font called an OtherSubr, an invalid memory access
- usually occurred, because of an incorrect attempt to free a data structure.
- (zchar1.c)
- - 2 .setlanguagelevel gave an error if globaldict hadn't been
- defined yet. (zmisc2.c)
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code, or failure to check for
- (implausible) out-of-range data. (idict.c, idparam.c, igc.c, iinit.c,
- imain.c, iscan.c, zbseq.c, zchar1.c, zdps1.c)
- Adjusts clients for a change in the internal character cache structure and
- the introduction of the font next-glyph procedure. (zfont.c, zfont0.c)
- Refactors the Level 1 / Level 2 interpreter split slightly so that composite
- fonts don't require all of Level 2. (int.mak, gs_dps1.ps, gs_dps2.ps)
- Adds FMapType 9 (CMap-encoded) composite font support. (int.mak,
- gs_cmap.ps, ifont.h, zfcmap.c, zfont.c, zfont0.c)
- </pre><h3><a name="V4.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Adds recognition of /Identity values for BG, UCR, and TR functions in
- ExtGState resources. (General function values still aren't recognized.)
- (pdf_draw.ps)
- Centralizes the handling of inherited attributes. (pdf_draw.ps,
- pdf_main.ps)
- Starts to add support for Type 0 fonts. (pdf_font.ps, pdf_main.ps)
- </pre><h3><a name="V4.61_Streams"></a>Streams</h3><pre>
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code. (shc.h, scfd.c, sfilter2.c,
- siscale.c, stream.c)
- </pre><h3><a name="V4.61_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Some picky compilers disliked certain conditional expressions.
- (gxclread.c)
- - Some picky compilers couldn't handle an extraneous semicolon.
- (gdevvec.h)
- - A cast from byte ** to const byte ** was missing. (gdevvec.c)
- - Resizing the levels array of a halftone order when banding could
- cause invalid memory accesses. (bug introduced in 4.60) (gxclread.c)
- - One picky compiler didn't allow taking the address of an extern
- undefined structure. (lib.mak, gxclread.c)
- - When rendering Type 1 fonts, character overshoot was usually
- suppressed when it shouldn't have been, often producing "squashed"
- characters. (gxhint1.c)
- - On systems where sizeof(long) > sizeof(int), coordinate values of
- more than 22 bits were passed through the band list incorrectly, producing
- incorrect output. (gxclread.c)
- Cleans up some warnings from picky compilers. Some of these actually
- indicated problems, such as unreachable code or (hypothetical) loss of
- precision. (gsdevice.c, gshsb.c, gsht.c, gsstate.c, gstype1.c, gxclimag.c,
- gxclpath.c, gxclread.c, gxpdash.c)
- Makes using font hints conditional, for debugging. (gxhint1.c)
- Adds library-level support for FMapType 9 (CMap-encoded) composite fonts.
- There is still no support for rearranged fonts. (gsccode.h, gsfcmap.h,
- gsstruct.h, gxfcache.h, gxfcmap.h, gxfont.h, gxfont0.h, gschar.c, gschar0.c,
- gsfcmap.c, gsfont.c, gsfont0.c)
- Splits band list control and utilities from rectangle-oriented commands,
- because a file was getting too big. (gxclist.c, gxclrect.c)
- Moves the temporary file names for command lists from the printer device
- structure to the command list structure; moves opening and closing the
- temporary files from gdev_prn_alloc/free to clist_open/close. (gdevprn.h,
- gxclist.h, gdevprn.c, gxclist.c, gxclread.c)
- Changes the command list storage implementation interface to pass the file
- name to the clist_rewind and clist_fseek functions, for the benefit of OSs
- that require closing and reopening a file to switch between reading and
- writing. This is a NON-BACKWARD-COMPATIBLE change in a non-public
- interface. (gxclio.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
- Changes the get_outline procedure in Type 42 fonts to return the length of
- the outline data as well as the pointer. This is a NON-BACKWARD-COMPATIBLE
- change in a semi-public interface. (gxfont42.h, gstype42.c)
- </pre>
- <h2><a name="Version4.60"></a>Version 4.60 (limited) (3/2/97)</h2>
- <p>
- This fileset moves color rendering up from the graphics state to the imager
- state so that color rendering can happen after banding. It also shifts
- image rendering to the rendering pass of banding for many common cases
- (often referred to inaccurately as "high-level image" capability). The
- changes involved are substantial and in some respects subtle, so
- unfortunately it is quite possible that some new bugs have been introduced.
- <p>
- This fileset also includes improvements to the new PCL XL driver
- (pxlmono/color), and introduces an experimental PostScript driver (pswrite).
- <h3><a name="V4.60_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The argument list of colorimage was incorrect. (zcolor1.c)
- - false .charboxpath incorrectly claimed to create the correct path
- even when the CTM was not well-behaved. (language.txt)
- - The discussion of the "main program" files was out of date.
- (make.txt)
- Updates the OS/2 EMX documentation. (make.txt)
- Modifies the Aladdin Ghostscript Free Public License slightly so it may be
- applied to other software packages. (PUBLIC)
- Updates inaccurate build documentation for several Unix platforms.
- (make.txt, ansihead.mak, cc-head.mak, gcc-head.mak, libpng.mak)
- Notes a problem with the MIPSpro 7.1 compiler. (make.txt)
- </pre><h3><a name="V4.60_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Most makefiles didn't include version.mak. (msc.mak,
- msvcwint.mak, os2.mak, tctail.mak, wctail.mak)
- - There was an incorrect dependency for the Windows printer device.
- (devs.mak)
- Moves the PDF writer to devs.mak. (devs.mak, int.mak)
- Updates the main VMS script to be structured like version.mak. (vms.mak)
- </pre><h3><a name="V4.60_Drivers"></a>Drivers</h3><pre>
- Factors out the stream-writing procedures from the PDF writer, so they can
- be shared with the new PostScript writer. (gdevpdfs.h => gdevpstr.h,
- gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c => gdevpstr.c,
- gdevpdft.c, gdevpsdf.c)
- Adds a PostScript writer (pswrite), similar to the PDF and PCL XL drivers.
- Currently this handles fill/stroke graphics and Level 1 images; everything
- else (including text) is turned into bitmaps. (devs.mak, gdevps.c)
- Changes the names of the PCL XL drivers from hpxmono/color to pxlmono/color.
- (devs.mak, gdevpx.c)
- Updates the "vector" device support interface. THIS IS STILL SUBJECT TO
- CHANGE WITHOUT NOTICE. (gdevvec.h, gdevpx.c, gdevvec.c)
- Makes the vgalib driver a page device. This seems bizarre, but it's
- necessary for setpagedevice to work with it. (gdevvglb.c)
- Updates some drivers for the new color mapping interfaces. (gdevpx.c)
- Updates the user-contributed Canon LBP-8II and LIPS III driver.
- (gdevlbp8.c)
- </pre><h3><a name="V4.60_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The workaround for Ultrix's incorrect implementation of sh -e
- still didn't work. (unixtail.mak)
- - The definition of offset_of didn't work on the Mac. (stdpre.h)
- Updates the OS/2 EMX linker command per input from a user. (os2.mak)
- </pre><h3><a name="V4.60_Fonts"></a>Fonts</h3><pre>
- Adds .pss (apparently used by Adobe for Multiple Master font instances) to
- the list of extensions skipped by the GS_FONTPATH directory scanner.
- (gs_fonts.ps)
- </pre><h3><a name="V4.60_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Programs that rebind null, true, and/or false could cause all
- kinds of problems. We've only fixed a couple of the places that might be
- affected (findfont, quit), by wrapping an explicit "systemdict begin/end"
- around the code; fixing this completely would probably require wrapping this
- implicitly around almost every pseudo-operator, which would be too
- expensive. (gs_fonts.ps, gs_lev2.ps)
- - In a Level 2 system, grestoreall stopped one level too early.
- (zdevice2.c)
- - setpagedevice didn't restore the stack properly if it got an
- error. (gs_setpd.ps)
- Changes the GC pointer enumeration interface to reduce the number of
- 'discarding const' warnings. See under Library below. (igc.c)
- Updates the interpreter for the change in the imager / graphics state split.
- (zpcolor.c)
- Makes the stack-restoring behavior of pseudo-operators non-optional.
- (interp.c)
- </pre><h3><a name="V4.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at
- position 45 rather than `hyphen'. (gs_pdf_e.ps, gs_wan_e.ps)
- </pre><h3><a name="V4.60_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - A header file wasn't protected against double inclusion.
- (stream.h)
- - any_abs was redefined. (spngp.c)
- - The CCITTFaxDecode filter didn't fully initialize the "previous
- line" for 2-D decoding, so if the very first line of data was 2-D, an
- out-of-bounds memory access could occur. (scfd.c)
- </pre><h3><a name="V4.60_Library"></a>Library</h3><pre>
- Fixes bugs:
- - gs_image_next could read too much data, causing errors at the
- interpreter level. (gsimage.c)
- - The bitmaps stored in the Pattern cache were usually freed,
- leaving dangling pointers. (gsdcolor.h, gxpcache.h, gxpcolor.h, gsstate.c,
- gxpcmap.c)
- - There was still one assignment to a const structure, and there
- were some unnecessary const-discarding casts. (gxclread.c)
- - If a character in a Type 3 font was defined by executing 'show'
- type commands, charpath did the wrong thing (didn't pick up the paths
- created by the inner show). Similarly, if it uses 'stroke', true charpath
- did the wrong thing (appended the path rather than the strokepath path).
- (gxchar.h, gschar.c, gspaint.c)
- - A header file wasn't protected against double inclusion.
- (gserror.h)
- - The new fast implementation of rectfill didn't handle rectangles
- with negative width/height. (bug introduced in 4.32) (gsdps1.c)
- - Reading banded high-level images calculated the image height
- incorrectly, (usually) causing a rangecheck. (gxclread.c)
- - When reading band data, a memory fault could occur if the halftone
- cache hadn't been allocated yet. (gxht.c)
- - The imager state data for high-level images wasn't written soon
- enough. (gxclimag.c)
- - High-level images computed bounding boxes incorrectly, so they
- could write some garbage data in the band list, and could also fail to write
- some information. (gsmatrix.h, gxmatrix.h, gxclimag.c)
- - High-level images wrote the raster value incorrectly in the band
- list. (gxclimag.c)
- - Images with non-zero initial source X and non-portrait orientation
- were displaced on the page. (In practice, this only applied to some banded
- high-level images.) (gximage.c)
- - The bounding box device didn't forward output_page calls, causing
- pages to be dropped or overprinted. (gdevbbox.c)
- - The band renderer considered all non-zero return codes as errors,
- rather than only negative codes. (gxclread.c)
- - An unnecessary extern hadn't been removed. (gxclimag.c)
- - Some macros didn't parenthesize uses of their arguments, causing
- syntax errors. (gsrefct.h)
- - The screen phase and color_info weren't set correctly when
- rendering bands. (gsstate.h, gsht.c, gxclread.c)
- - A header file didn't declare all the opaque types it used.
- (gsdevice.h)
- - Indexed color spaces didn't work with banded images. (They still
- don't -- the check for writing the color space, and the code for reading the
- table or map, are incomplete.) (gxclist.h, gxclpath.h, gxclimag.c,
- gxclpath.c, gxclread.c)
- In preparation for implementing post-banding halftoning:
- - Moves color rendering information, including alpha value, from
- graphics state to imager state; also moves the allocator pointer. This is
- quite a subtle change, and may have a significant bug tail. (gxdcolor.h,
- gxht.h, gxistate.h, gzstate.h, gschar.c, gsdps1.c, gspaint.c, gsstate.c,
- gxclread.c)
- - Changes all the relevant color space and color mapping procedures
- so they take a const gs_imager_state * (and, in some cases, a [const]
- gx_device *) instead of a const gs_state *. This is a
- non-backward-compatible change, but it only affects internal interfaces.
- (gsdcolor.h, gxcmap.h, gxcspace.h, gxdcconv.h, gxdcolor.h, gxdither.h,
- gxpcolor.h, gzht.h, gschar.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c,
- gscsepr.c, gsdevice.c, gsimage.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcconv.c,
- gxdcolor.c, gxht.c, gximage.c, gximage[2345].c, gxpcmap.c)
- - Changes the color and color space reference count adjustment
- procedures similarly, to take a gs_memory_t * instead of a gs_state_t *.
- (gxcspace.h, gscie.c, gscolor.c, gscolor2.c, gscsepr.c, gspcolor.c)
- - Changes the gs_halftone in the graphics state from being part of
- the gs_state_contents to being an independent reference-counted object.
- This too may have a significant bug tail. (gxht.h, gxistate.h, gsht.c,
- gsstate.c)
- - Changes the image processing code so it no longer assumes that the
- gs_imager_state is actually a gs_state. (gximage.h, gximage.c, gximage2.c,
- gximage3.c, gximage4.c, gximage5.c)
- - Adds a unique ID value to device halftones, so that it's possible
- to detect (non-)changes quickly. (gxdht.h, gsht.c)
- Finishes the code for writing and reading color rendering information in the
- band list. This involves changes to several band list opcodes. (gsht.h,
- gsht1.h, gxcldev.h, gxclist.h, gxclpath.h, gxdht.h, gzht.h, gsht.c, gsht1.c,
- gxclbits.c, gxclimag.c, gxclist.c, gxclread.c)
- Changes the garbage collector pointer enumeration procedure interface
- slightly to reduce the number of 'discarding const' warnings. THIS IS A
- NON-BACKWARD-COMPATIBLE CHANGE for anyone who didn't use the
- ENUM_PTRS_BEGIN[_PROC] macro to start a pointer enumeration procedure (which
- should be no one). (gsstruct.h, gsmemory.c)
- Corrects a few more needlessly const-discarding casts. (gxfcache.h,
- gxccache.c)
- Checks for file reading errors when rasterizing bands. (gxclread.c)
- </pre>
- <hr>
- <h2><a name="Version4.51"></a>Version 4.51 (limited) (2/9/97)</h2>
- <p>
- This version contains a more reasonable high-level PCL XL driver. The VMS
- build script is working again, we think.
- <h3><a name="V4.51_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The gsdll_h macro wasn't defined all the places it was needed.
- (devs.mak, os2.mak)
- </pre><h3><a name="V4.51_Drivers"></a>Drivers</h3><pre>
- Continues to develop the "vector" driver infrastructure and the PCL XL
- driver. EVERYTHING IN THESE FILES IS SUBJECT TO CHANGE WITHOUT NOTICE.
- (gdevvec.h, gdevvec.c)
- Brings the PCL XL driver up to usable quality for graphics. Most
- fill/stroke graphics, and portrait-orientation bitmap images up to 8 bits
- per pixel, are converted directly to their PCL XL equivalents. Text is
- still treated as bitmaps. Both gray-scale and color output are now
- supported. (devs.mak, gdevpx.c)
- </pre><h3><a name="V4.51_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - When using gsos2.exe with gsdll2.dll, reducing the size of the
- page bitmap caused a limitcheck error with the message
- Failed to decommit memory in pm_alloc_bitmap, rc = 87 (gdevpm.c)
- - The scripts that construct gconfig_.h failed on Ultrix, because
- Ultrix's implementation of sh -e is incorrect. (unixtail.mak, ugcclib.mak)
- - Some systems that have sys/times.h don't define CLK_TCK, making a
- compilation fail. (time_.h)
- </pre><h3><a name="V4.51_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - An omitted semicolon wasn't detected by gcc. (idict.c)
- Removes a source of unnecessary duplication by getting the revision number
- and date from version.mak. (gs.mak, int.mak, version.mak, gscdef.c)
- </pre><h3><a name="V4.51_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The minimum buffer sizes for the RunLengthDecode filter hadn't
- been changed to reflect the algorithm improvement made in release 4.38.
- (srld.c)
- Changes the RunLengthEncode filter so it can make progress with only a
- 2-byte output buffer. (srlx.h, srle.c)
- </pre><h3><a name="V4.51_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Because of a typo, the slow general algorithm was always used for
- monochrome images. (Performance bug only, but a serious one.) (gximage2.c)
- - Dots (zero-length lines with round caps and zero dot length)
- caused an infinite loop. (bug introduced in 4.40) (gxstroke.c)
- - Some image data unpacking procedures were always required, but
- weren't always included. (bug introduced in 4.50) (gximage.c, gximage0.c,
- gximage3.c)
- - Images with 8 bits per pixel and non-identity Decode produced
- garbage. (bug introduced later than 4.03) (gximage0.c)
- - Some necessary casts and omitted punctuation weren't detected by
- gcc. (gxpath.h, gsargs.c, gsstate.c, gxclread.c, gxpdash.c)
- - The band list became confused if a band had no commands at all.
- (gxclread.c)
- - If a path included a closepath followed by a moveto to the same
- point, it could be written incorrectly in the band list. (bug probably
- introduced in 3.60) (gxclpath.c)
- Changes some internal computations for arcs from float to double for greater
- accuracy. (gspath1.c)
- </pre>
- <h2><a name="Version4.50"></a>Version 4.50 (limited) (1/31/97)</h2>
- <p>
- This release contains an experimental high-level PCL XL driver, a little
- more support for CID/CMap fonts, and the usual bug fixes. NOTE: the VMS
- build script is known to be out of sync with the makefiles again; we still
- don't see any alternative to constant struggles with this problem.
- <h3><a name="V4.50_Documentation"></a>Documentation</h3><pre>
- Corrects the -h message, which gave an incorrect file name for the bug
- report form. (imainarg.c)
- Removes documentation for 16-bit MS-DOS platforms with the Borland compiler.
- (fonts.txt, make.txt, new-user.txt, use.txt)
- </pre><h3><a name="V4.50_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The Watcom library makefile didn't define the directory
- information for libpng and zlib. (watclib.mak)
- Moves the selection of band list implementation (file- vs. RAM-based) and
- the compression filter for RAM-based band lists up to the top-level
- makefiles. Again, this is a NON-BACKWARD-COMPATIBLE procedure change.
- (lib.mak, *.mak)
- Moves the selection of version number for all platforms (except VMS, as
- usual) to a separate file. This will reduce the number of files that need
- editing when the version number changes. (ansihead.mak, cc-head.mak,
- gcc-head.mak, ugcclib.mak, version.mak, tar_cat)
- </pre><h3><a name="V4.50_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - An error in the (unsupported) SGI RGB driver could cause crashes
- or incorrect output. (gdevsgi.c)
- Starts to create a framework for structured output ("vector") drivers (PDF,
- PostScript, PCL XL, etc.) (gdevbbox.h, gdevvec.h, gsdcolor.h, gsstruct.h,
- gxdevice.h, gdevvec.c)
- Moves default page size parameters to a more accessible header. (gdevprn.h,
- gxdevice.h, gdevx.c)
- Adds a driver that produces properly structured PCL XL output. This is
- highly experimental and not ready for use yet. (gdevpx.c)
- </pre><h3><a name="V4.50_Platforms"></a>Platforms</h3><pre>
- Removes support for 16-bit MS-DOS platforms with the Borland compiler. For
- the moment, 16-bit MS Windows is still supported. (bc.mak, bcflags.mak,
- bclib.mak, tc.mak)
- </pre><h3><a name="V4.50_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - File-based CIDFonts (with delayed, incremental loading of
- character outlines) didn't work. (gs_cidfn.ps)
- Finishes implementing the definition of CMap resources, except for
- rearranged fonts. (gs_cidfn.ps, gs_cmap.ps)
- Adds a little more CMap support code. (zcid.c)
- Removes the .setcurrentfile operator, since it doesn't solve the problem it
- was intended to address. (zcontrol.c)
- Adapts the interpreter to use the new argument processing code.
- (imainarg.c)
- </pre><h3><a name="V4.50_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The CCITTFaxDecode filter could access as much as 3 bytes beyond
- the end of a buffer, causing an invalid memory access. (This is essentially
- the same bug that was fixed for the CCITTFaxEncode filter in 4.38.)
- (scfd.c)
- </pre><h3><a name="V4.50_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Painting an image without having set up any halftone could cause a
- crash. (gxht.c)
- - In a very obscure case, an occasional scan line of landscape
- images could get corrupted. (gximage0.c)
- - Because of a rounding error, patterns could fail to be painted in
- certain cases. (gxpcolor.h, gspcolor.c, gxpcmap.c)
- - Very large line widths or miter limits could cause the computation
- of stroke expansion to overflow. (gxpaint.h, gdevbbox.c, gxclpath.c,
- gxstroke.c)
- - The phase could be incorrect for simple patterns. (gspcolor.c)
- - The default implementation of copy_mono used an incorrect
- RasterOp. (gdevdflt.c)
- - The default implementation of fill_masked didn't increment the row
- pointer, causing characters to appear as solid rectangular blocks.
- (gxdcolor.c)
- Eliminates an unnecessary gsave and grestore from rectfill and rectstroke if
- the path was null. (gsdps1.c)
- Adds a limit on the amount of space that the default (C heap) allocator will
- allocate, and a record of the maximum amount allocated, to help testing
- embedded products. (gsmemory.c)
- Changes the band list algorithm for deciding how many replicas of a halftone
- tile to store in the tile cache. The previous algorithm was too liberal,
- which could cause the cache to overflow and many unnecessary bitmaps to be
- written in the band list. (gxclbits.c)
- Writes clipping with a rectangle more compactly in the band list.
- (gxfixed.h, gxclpath.c)
- Adds new band list commands for representing 90- and 180-degree arcs
- compactly. (gxclpath.h, gxclpath.c, gxclread.c)
- Repackages handling of general monochrome images, color images, and 12-bit
- and interpolated images, so that they are included optionally rather than in
- all configurations. (int.mak, lib.mak, gximage.h, gximage.c,
- gximage[12345].c)
- Changes the structure definition for devices to include no-op pointer
- enumeration and relocation, so they can have subclasses. (gxdevice.h)
- Adds a library facility for processing command line arguments with
- @-expansion. (gsargs.h, gsargs.c)
- </pre>
- <hr>
- <h2><a name="Version4.41"></a>Version 4.41 (private) (1/21/97)</h2>
- <p>
- This release adds a PCL XL output driver, and a few performance
- improvements.
- <h3><a name="V4.41_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The zlib library used an incorrect header file when compiling.
- (zlib.mak)
- Changes the names of the preprocessor symbols indicating the presence of
- system header files to be consistent with the ones used by GNU configure.
- (dvx-tail.mak, ugcclib.mak, unixtail.mak, vms.mak; dirent_.h, time_.h;
- gp_unix.c)
- Changes the method for choosing the compression filter for RAM-based band
- lists. This is a NON-BACKWARD-COMPATIBLE change in the makefile. (lib.mak)
- </pre><h3><a name="V4.41_Drivers"></a>Drivers</h3><pre>
- Adds black-and-white and 8-bit gray PCL XL (PCL 6) drivers for the LaserJet
- 5 and 6 family. This driver is extremely simple and just emits bitmaps;
- future drivers will use more PCL XL high-level constructs. (gdevlj56.c)
- </pre><h3><a name="V4.41_Fonts"></a>Fonts</h3><pre>
- Updates the free font distribution to add the URW Grotesk and Antiqua fonts.
- </pre><h3><a name="V4.41_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - gs -h and -v returned with a non-zero exit code on all platforms.
- (This is necessary under Windows, to keep the message visible on the screen,
- but nowhere else.) (imainarg.c)
- - Resizing a dictionary could exceed dict_max_size, causing memory
- corruption. (dstack.h, idict.h, idict.c, zdict.c)
- Adds .setlinecap and .setlinejoin that can use the extended range of line
- cap/join values, and redefines setlinecap and setlinejoin in terms of them.
- (gs_init.ps, zgstate.c)
- </pre><h3><a name="V4.41_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The CCITTFaxDecode filter with EncodedByteAlign = true skipped to
- a byte boundary before checking for an EOL. This may be wrong if EndOfLine
- = true; we aren't at all sure what should happen if EndOfLine = false.
- (scfd.c)
- Adds a "no wrapper" option to the zlib streams, to optionally suppress the
- time-consuming integrity checksum computation. (szlibx.h, szlibc.c,
- szlibd.c, szlibe.c)
- </pre><h3><a name="V4.41_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Dashed lines with zero-length drawn segments (dots) that fell
- exactly on a corner produced inappropriate output. (pcl/test19.pxs)
- (gxpdash.c, gxstroke.c)
- - Dashed lines didn't set the segment notes properly. (gxpdash.c)
- - The bounding box device didn't free a bookkeeping structure at the
- end of processing an image. (gdevbbox.c)
- - Curve points could get computed incorrectly when using emulated
- floating point. (gxpcopy.c)
- - The 1-element cache for curve_x_at_y didn't work if Y was
- decreasing. (gxfixed.h, gxpcopy.c)
- Distinguishes between error and informational exits. (stdpre.h)
- Defines and checks maximum values for line cap and join parameters.
- (gslparam.h, gsline.c)
- Removes the 'not last' segment note, since it is not used for anything.
- (gxpath.h, gspath1.c, gxpath2.c, gxpcopy.c, gxpflat.c, gxstroke.c)
- Changes the memory freeing algorithm for RAM-based band lists back to the
- original one, since the "improved" one had more bugs than it was worth
- chasing. (gxclmem.c)
- Speeds up the A * B / C algorithm a little. (gsmisc.c)
- Speeds up curve_x_at_y by recognizing more cases that don't require the slow
- A * B / C algorithm. (gxpcopy.c)
- Changes the path filling code so it uses fill-by-trapezoids even if
- fill_adjust is zero, as long as the flatness is at least 1 pixel.
- (gxfill.c)
- Removes the (unneeded) floating point operations from gx_curve_log2_samples.
- (gxpflat.c)
- Changes the memory-based implementation of band lists so that it constructs
- the compressor and decompressor by calling procedures rather than
- instantiating templates: this allows setting filter parameters to
- non-default values. (gxclmem.h, gxcllzw.c, gxclmem.c, gxclzlib.c)
- </pre>
- <h2><a name="Version4.40"></a>Version 4.40 (private) (1/13/97)</h2>
- <p>
- This version finally handles the last graphics model discrepancies between
- PostScript and PCL, by correctly implementing null joins, minimum dot
- lengths, and tangent-aligned curve ends. It also contains some significant
- performance improvements, and as usual a few bug fixes.
- <h3><a name="V4.40_Documentation"></a>Documentation</h3><pre>
- Documents the new accurate curves and path dashing operators.
- (language.txt)
- </pre><h3><a name="V4.40_Utilities"></a>Utilities</h3><pre>
- Adds switches for genconf to set and unset a prefix for file names.
- (genconf.c)
- </pre><h3><a name="V4.40_Drivers"></a>Drivers</h3><pre>
- Adds recognition of the new Distiller 3.0 parameters to the PDF writer.
- (None of them have any effect yet.) (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c,
- gdevpdfp.c)
- Converts all the output functions in the PDF writer from being file-based to
- using streams, in anticipation of adding compression. (gdevpdfs.h,
- gdevpdfx.h, gdevpdf*.c, gdevpdfs.c)
- </pre><h3><a name="V4.40_Interpreter"></a>Interpreter</h3><pre>
- Adds operators for accessing the new accurate curves flag in the graphics
- state. (zgstate.c)
- Adds an operator for invoking gs_dashpath. (zpath1.c)
- </pre><h3><a name="V4.40_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - Indexed color spaces whose base space was a CIE space caused an
- error. (pdf_draw.ps)
- </pre><h3><a name="V4.40_Library"></a>Library</h3><pre>
- Fixes bugs:
- - A pointer was declared const incorrectly. (gxcpath.c)
- - Filling with a pattern often failed to pass a non-null bitmap ID,
- causing excessive writing in the band list. (Performance bug only.)
- (gspcolor.c)
- - The bounding box device didn't discount copy_mono or draw_line
- operations drawing in white. (gdevbbox.c)
- - The bounding box device didn't read out the bounding box correctly
- as the PageBoundingBox device parameter. (It did return it correctly
- through the gx_device_bbox_bbox procedure.) (gdevbbox.c)
- - The default implementation of fill_triangle drew nothing or
- incorrect output if the corners of the triangle were specified in certain
- orders (ax < 0 or bx < 0) (i.e., the previous "fix" had a bug).
- (gdevddrw.c)
- Changes tile size from always being set in all bands to being 'known' by
- bands individually. (gxclist.h, gxcldev.h, gxclbits.c, gxclist.c)
- Computes an additional value in advance when rendering images. (gximage.h,
- gximage1.c, gximage2.c)
- Replaces some slow loops with calls of memmove. (gxclmem.c)
- Provides a fixed-point implementation of A * B / C for machines with slow
- floating point. (gxfixed.h, gsmisc.c)
- Extends the "device color" type to implement filling masked regions as well
- as rectangles. (gxdcolor.h, gdevdflt.c, gspcolor.c, gxcht.c, gxdcolor.c,
- gxht.c)
- Makes unclipped monobit portrait and landscape images and image masks use
- the new masked fill capability of device colors. (gximage.h, gximage.c,
- gximage1.c, gximage2.c)
- Adds a macro for determining pointer alignment. (stdpre.h, gdevdflt.c)
- When floating point is slow, uses a different, faster algorithm for
- gx_curve_x_at_y. (gxpcopy.c)
- Improves performance by adding a one-element cache for gx_curve_x_at_y.
- (gzpath.h, gxpcopy.c)
- Reduces overhead when banded images are pre-rasterized (currently, always).
- (gxclimag.c)
- Adds a rendering cost estimate field to each band in a band list. This
- field isn't actually used for anything yet; eventually, the intent is that
- bands with a high cost will get rendered, and stored in compressed form,
- before starting the engine. (gxclist.h)
- Adds the concept of 'notes' for path segments, to allow remember what
- segments constitute a single curve or arc. Currently we set these properly
- for everything except dashed paths. (gxclpath.h, gxpath.h, gzpath.h,
- gspath1.c, gxclpath.c, gxclread.c, gxpath.c, gxpath2.c, gxpcopy.c)
- When the dot length is non-zero, changes curve stroking to always use bevel
- joins within each curve rather than the current join. This prevents a
- "bristly" look with no join and butt caps. (gxstroke.c)
- Adds an "accurate curves" capability that makes the last line segment of a
- flattened curve actually be tangent to the curve, which in turn makes
- flat-end caps be correctly perpendicular to the tangent. (gxpath.h,
- gxpcopy.c)
- Adds an "accurate curves" flag in the graphics state. (gsline.h,
- gxclpath.h, gxistate.h, gsline.c, gspath.c, gspath1.c, gxclpath.c,
- gxclread.c, gxfill.c, gxstroke.c)
- Changes the meaning of "no join" (gs_join_none) so that instead of producing
- no join and butt caps, it produces whatever the current cap is. This is
- compatible with the H-P definition. (gxstroke.c)
- Implements non-zero dot length for dash patterns. (gxpdash.c)
- Splits off the curve flattening algorithms into a separate file.
- (gxpcopy.c, gxpflat.c)
- </pre>
- <hr>
- <h2><a name="Version4.39"></a>Version 4.39 (limited) (1/1/97)</h2>
- <p>
- This version was created only to accompany a release of the PCL XL
- interpreter. It was withdrawn the day after it was released, because the
- tools used to produce it put the wrong files in the filesets.
- <h3><a name="V4.39_Documentation"></a>Documentation</h3><pre>
- Adds a more detailed description of the third-party ps_view viewer
- interface. (new-user.txt)
- Corrects an error in a reference to the PSLRM. (lib.txt)
- Documents the change in .makeoperator. (language.txt)
- Updates the FTP location of the zlib sources. (zlib.mak)
- </pre><h3><a name="V4.39_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The Unix library makefile didn't include the necessary definitions
- for libpng and zlib. (ugcclib.mak)
- Allows selecting the compression filters for memory-based band lists in the
- makefile. Makes zlib (deflate) the default compressor for memory-based band
- lists. (lib.mak)
- </pre><h3><a name="V4.39_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - prfont.ps wouldn't print unencoded characters in Type 42 fonts.
- (prfont.ps)
- </pre><h3><a name="V4.39_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The H-P monochrome driver didn't put out enough initialization
- commands at the beginning of each page to make each page printable
- independently. (gdevdjet.c)
- </pre><h3><a name="V4.39_Interpreter"></a>Interpreter</h3><pre>
- Changes ref_stack_count_inline so it never does a procedure call.
- (istack.h)
- Changes .makeoperator so that operator procedures save the stack depths, and
- restore the stack pointers (if possible) if the operator encounters an
- error. This is a NON-BACKWARD-COMPATIBLE CHANGE; it requires rewriting the
- 'stop' and 'stopped' pseudo-operators (and, if there were any, any other
- pseudo-operators that interact with the error handling machinery) in C.
- (gs_init.ps, interp.c, zcontrol.c)
- Adds recognition of the LeadingEdge, MediaClass, and RollFedMedia keys in a
- page device dictionary, per the Adobe supplement for their version 2017
- interpreter. This involves a NON-BACKWARD-COMPATIBLE change to the
- (undocumented) .matchpagesize operator. (gs_setpd.ps, zmedia2.c)
- Makes necessary changes for compatibility with the added parameters for the
- zlib filters. (zfzlib.c)
- </pre><h3><a name="V4.39_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The zlib encoder returned EOFC when it should have returned 0.
- (szlibe.c)
- Adds optional parameters and reset procedures for the zlib filters.
- (szlibx.h, szlibc.c, szlibd.c, szlibe.c)
- </pre><h3><a name="V4.39_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Displaying characters with a non-standard RasterOp could cause an
- invalid memory access. (gdevdflt.c)
- - Banding sometimes used an incorrect RasterOp. (gxclread.c)
- - When banding, mixing Patterns and halftones could confuse the
- bookkeeping of tile size, leading to incorrect generation of the band list
- and error messages or confusion when rasterizing. (gxclist.h, gxclbits.c,
- gxclread.c)
- - If only the dash pattern offset changed, and not any of the other
- dash-related parameters, the new offset wasn't written in the band list,
- causing incorrect output. (gxclpath.c)
- - Oversized halftone tiles didn't report their error code properly.
- (gxclbits.c)
- - Oversized halftone tiles with RasterOp caused an error.
- (gxclist.c)
- - When banding, RasterOp transfers that crossed a band boundary
- didn't access the correct source data on bands other than the first.
- (gxclist.c)
- - There were redundant copies of the code for writing a RasterOp
- value in the band list. (gxclimag.c, gxclpath.c)
- - Oversized patterns or halftones produced garbled output.
- (gxclbits.c)
- - The check for oversized patterns or halftones was slightly
- incorrect, leading to the possibility of writing out a tile that would
- overflow the reading buffer and corrupt memory. (gxclbits.c)
- - When banding, RasterOp wasn't applied to fill and stroke
- operations, and wasn't applied correctly to characters. (gdevdflt.c,
- gxclimag.c, gxclread.c)
- - The RasterOp-related optimizations for black-and-white images
- sometimes produced incorrect output. (gximage.c, gximage2.c)
- - The default implementation of fill_triangle didn't draw anything
- if the corners of the triangle were specified in certain orders (ax < 0 or
- bx < 0). (gdevddrw.c)
- - Painting with a Pattern could pass out-of-range phase values to
- driver procedures. (gspcolor.c)
- - Because of an off-by-1 error, halftones or patterns passed through
- the band list could write past the end of their allocated space in the band
- tile cache, leading to incorrect output or possible arithmetic exceptions or
- memory access errors. (gsbitops.c)
- Adds -Z: for printing only the minimal command list statistics. (gxclist.c,
- gxclread.c)
- Expands band list tracing so it includes all of the data associated with the
- command, not just the command name and a few command parameters.
- (gxclread.c)
- Adds free lists for strings. Currently these are only used in
- non-garbage-collected environments. (gxalloc.h, gsalloc.c, gsnogc.c)
- Adds a procedure for copying a path structure, and an (internal) accessor
- for the current path in the graphics state. (gxpath.h, gspath.c, gxpath.c)
- Speeds up filling characters with halftones a little bit. (gdevdflt.c)
- Changes the memory-based implementation of band lists so it can use any
- compression / decompression filter, so it only compresses when it has
- allocated a specified amount of buffer storage, and so it releases its
- buffer storage at the end of each page. (gxclmem.h, gxclmem.c)
- Speeds up counting the number of 1-bits in a byte, which is used in some
- image processing algorithms. (gsbittab.h, gsbittab.c)
- Reduces the band list space required for changing tile size. (gxcldev.h,
- gxclbits.c, gxclread.c)
- </pre>
- <h2><a name="Version4.38"></a>Version 4.38 (limited) (12/20/96)</h2>
- <p>
- Adds support for a couple of undocumented features in Type 1 fonts.
- <h3><a name="V4.38_Interpreter"></a>Interpreter</h3><pre>
- Adds handling of the Type 1 font subroutineNumberBias (an optional entry in
- the Private dictionary) and lenIV = -1 features at the interpreter level.
- (zchar1.c, zfont1.c)
- </pre><h3><a name="V4.38_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The CCITTFaxEncode filter could access as much as 3 bytes beyond
- the end of a buffer, causing an invalid memory access. (scfe.c)
- Changes the RunLengthDecode filter so it can make progress (produce output)
- with only a 1-byte output buffer. (srlx.h, srld.c)
- </pre><h3><a name="V4.38_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The sine and cosine of multiples of 90 degrees weren't exact.
- (gxfarith.h, gsmisc.c)
- - The expanded bounding box computation for strokes didn't take into
- account the possibility of overflow. (gxstroke.c)
- - The allocator didn't fill freed strings with the 'free' mark.
- (gsalloc.c)
- - When using a pattern with RasterOp, the phase was computed
- incorrectly, leading to anomalous filling patterns. (gspcolor.c)
- - Patterns with a non-zero translation in the matrix passed to
- makepattern didn't translate the pattern origin properly. (gxcolor2.h,
- gxpcolor.h, gspcolor.c)
- Adds a subroutineNumberBias field to Type 1 fonts. This is an undocumented
- feature of the Type 1 font format. (gxfont1.h, gstype1.c)
- Interprets lenIV = -1 in Type 1 fonts as meaning that the CharStrings are
- unencrypted. This too is an undocumented feature of the Type 1 format.
- (gxfont1.h, gxtype1.h, gstype1.c, gstype2.c)
- Changes gs_clippath so it returns more reasonable outlines. (There are too
- many programs that rely on being able to stroke the result of clippath, even
- though both the Adobe and H-P literature specifically say the results are
- unpredictable.) (gxcpath.h, gxcpath.c)
- </pre>
- <h2><a name="Version4.37"></a>Version 4.37 (limited) (12/10/96)</h2>
- <p>
- This version implements separate halftone phase for source and texture,
- required for PCL XL implementation.
- <h3><a name="V4.37_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - Loading a native TrueType font without a 'post' table caused an
- error. (gs_ttf.ps)
- </pre><h3><a name="V4.37_Interpreter"></a>Interpreter</h3><pre>
- Extends the interpreter to handle the new separate halftone phases for the
- RasterOp source and texture. (gs_dps1.ps, zdps1.c)
- Makes a small change to accommodate a library change supporting Type 2
- charstrings. (zfont1.c)
- </pre><h3><a name="V4.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Implements the FontFile2 key for embedded TrueType fonts. (pdf_font.ps)
- Starts to implement the FontFile3 key for compressed Type 1 fonts. This
- code is currently disabled, because none of the necessary underlying C is
- written yet. (pdf_font.ps)
- </pre><h3><a name="V4.37_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The floating point emulator often returned incorrect results (too
- many bugs to list). (This is not used in any standard configuration.)
- (gsfemu.c)
- - The new copy_for procedure for gstates incorrectly declared an
- argument as const. (gxstate.h, gsstate.c)
- - If a curve had to be split twice along the same axis to make it
- monotonic, the split points could still be returned in the wrong order,
- possibly causing curved edges to turn into straight lines, and the algorithm
- still produced the wrong results if the curve had to be split twice along a
- single axis. This is the second time we have "fixed" these problems and the
- 4th time we have "fixed" the curve monotonizing algorithm. (gxpcopy.c)
- - Setting halftones cause a memory leak, because the subsidiary
- objects of the device halftone weren't freed properly. Fixing this required
- changing the graphics state implementation from allocating a device halftone
- for each gstate to managing the device halftone with reference counting.
- (gxdht.h, gzstate.h, gsht.c, gsstate.c)
- Provides an optimized version of ldexp for FPU-less configurations, and
- changes one key algorithm to use it. (gxfixed.h, gsmisc.c, gxpcopy.c)
- Speeds up imagemask with a halftone a little. (This will eventually require
- more serious optimization.) (gximage2.c)
- Adds a -Z* switch for tracing varieties of image rendering. (gximage.c)
- Recognizes that if the logical operation is equivalent to D = S (after
- accounting for a constant texture, if any), or if it is equivalent to D = ~S
- or D = D {&,|}{S,~S} and D and S are both monobit and both colors are pure,
- imaging with RasterOp can be executed without invoking RasterOp. (gsropt.h,
- gximage.c)
- Makes coordinate transformations with landscape matrices execute as fast as
- with portrait matrices. (gxmatrix.h, gscoord.c, gsmatrix.c)
- Adds some sketch code for interpreting Type 2 charstrings. It compiles, but
- it makes no pretense of being runnable. (gstype1.h, gxop1.h, gxtype1.h,
- gstype2.h, gxfont1.h, gstype1.c, gstype2.c)
- Extends the library to allow setting separate halftone phases for the
- RasterOp source and texture, which is needed to implement halftone screens
- that behave like those in H-P's PCL XL printers. (gscsel.h, gsstate.h,
- gxcmap.h, gxcspace.h, gxdcolor.h, gxdither.h, gxpcolor.h, gzht.h, gzstate.h,
- gscie.c, gscsepr.c, gsht.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcolor.c,
- gxht.c, gximage.c, gximage[2345].c, gspcmap.c) ****** STILL NEED TO UPDATE
- BANDING CODE, grep FOR phase ******
- Removes the rc_header member from the gs_halftone structure, since we don't
- need it after all. (gxht.h)
- </pre>
- <h2><a name="Version4.36"></a>Version 4.36 (limited) (12/3/96)</h2>
- <p>
- This version fixes a number of library bugs related to RasterOp, Patterns,
- and memory management.
- <h3><a name="V4.36_Documentation"></a>Documentation</h3><pre>
- Changes the definition of texture transparency to match the peculiar H-P
- specification. (drivers.txt, language.txt)
- </pre><h3><a name="V4.36_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - x_get_bits didn't flush updates to the frame buffer, leading to
- possibly incorrect data being returned. (gdevx.c)
- - x_get_bits added padding to the scan line being copied, possibly
- corrupting memory. (gdevx.c)
- Changes the x11mono driver to define white = 0, black = 1 to more closely
- model black-and-white printers. (This is an internal change that doesn't
- affect the output.) (gdevxalt.c)
- </pre><h3><a name="V4.36_Interpreter"></a>Interpreter</h3><pre>
- Removes some code that is no longer needed, by virtue of the fix for the
- memory leak in Pattern remapping. (zpcolor.c)
- </pre><h3><a name="V4.36_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Patterns wider than 1024 bits caused a rangecheck. (gxclip2.h,
- gxclip2.c)
- - Dash patterns never got freed. The fix for this slows down gsave
- and grestore slightly, but we don't see any way around it. (gsline.c,
- gsstate.c)
- - If the CTM was very non-uniform in X and Y, stroke sometimes
- didn't recognize thin lines as being thin, leading to dropouts.
- (gxstroke.c)
- - RasterOps that didn't use S or T still took S or T transparency
- into account. (gdevmrop.c)
- - RasterOps with no source didn't handle the possibility that the
- device color for black might have a value other than 0. (gxdcolor.h,
- gspcolor.c, gxcht.c, gxdcolor.c, gxht.c)
- - White pixels in halftones on black-and-white devices apparently
- are *not* supposed to be treated as opaque for RasterOp. (gxcht.c, gxht.c)
- - clippath caused memory to be lost until a restore or a garbage
- collection. (gspath.c)
- - Clipping lists weren't ever freed, and clipping paths sometimes
- weren't freed, causing memory to be lost until a restore or a garbage
- collection. (gzacpath.h, gxacpath.c, gxcpath.c)
- - Freeing a pattern instance referenced a pointer after it had been
- freed, causing an invalid memory access. (gspcolor.c)
- - Remapping a Pattern color lost track of the temporary gstate,
- memory devices, and possibly the mask, causing memory to be lost until a
- restore or GC. (gxpcolor.h, gxpcmap.c)
- - Remapping a Pattern color could cause paths to be marked as
- shared, preventing them from being freed until a restore or GC. (gxpcmap.c)
- Enhances the non-tracing garbage collector so that if there are no strings
- allocated at all, it resets the string allocation pointers. (gsnogc.c)
- Optimizes the black-and-white RasterOp implementation by recognizing cases
- that can be implemented directly by fill_rectangle, copy_mono, or
- tile_rectangle. (gdevmrop.h, gsropt.h, gdevmrop.c, gsroptab.c)
- Changes -ZA so it no longer produces [P] tracing messages for path
- construction. (gxpath.c)
- Adds a gx_pattern_cache_winnow procedure for selectively removing entries
- from the Pattern cache, similar to gx_purge_selected_cached_chars.
- (gscolor2.h, gxpcolor.h, gxpcmap.c)
- Adds the Pattern UID to Pattern cache entries. (gxpcolor.h, gxpcmap.c)
- ****** MUST HANDLE XUID POINTERS ON GC (RELOC) & RESTORE (CLEAR LIKE HT
- CACHE) ******
- Makes gs_gstate free the path representation of the clipping path if it's a
- rectangle, since reconstructing it is cheap and otherwise the path segments
- would not be freeable until a restore or GC. (gsstate.c)
- Extends the "client data" interface for gstates so that the copy procedure
- can determine why it is being called. (gxstate.h, gsstate.c)
- </pre>
- <h2><a name="Version4.35"></a>Version 4.35 (limited) (11/24/96)</h2>
- <p>
- This contains the usual bug fixes, and two minor enhancements: an option for
- handling EPSF files with binary headers, and support for file-based
- resources.
- <h3><a name="V4.35_Documentation"></a>Documentation</h3><pre>
- Documents the new EPSF-reading capability. (gs.mak)
- </pre><h3><a name="V4.35_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Some obsolete definitions were accidentally left in the rules for
- compiling fonts into the executable. (int.mak)
- </pre><h3><a name="V4.35_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - initgraphics left the current color space in an inconsistent
- state. (bug introduced in 4.32) (zgstate.c)
- - restore didn't properly rebind FontDirectory to either Local or
- SharedFontDirectory according to the current VM selection. (gs_dps1.ps)
- - If FontDirectory was redefined, many things broke. (gs_ccfnt.ps,
- gs_dps1.ps, gs_fonts.ps, gs_pdfwr.ps)
- - If a resource provided a file name but the file couldn't be
- opened, an error occurred. (gs_res.ps)
- - flushfile didn't work with procedure-based streams. (zfileio.c)
- Adds a feature (epsf.dev) that allows the interpreter to recognize and
- handle MS-DOS EPSF files with a binary header. (int.mak, gs_epsf.ps,
- gs_init.ps, pdf_main.ps)
- Adds (internal) .getuserparam and .getsystemparam operators for getting the
- value of a single user or system parameter. (gs_lev2.ps, zusparam.c)
- To support file-based resources, implements the FontResourceDir,
- GenericResourceDir, and GenericResourcePathSep system parameters, and
- ResourceFileName for the built-in resource categories. (gs_init.ps,
- gs_lev2.ps, gs_res.ps)
- </pre><h3><a name="V4.35_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The 2-D CCITTFaxDecode filter became confused if a buffer boundary
- fell between a horizontal make-up code and its terminating code, typically
- causing an ioerror. (scfd.c)
- </pre><h3><a name="V4.35_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Using the null color could confuse the reference counts for color
- spaces, causing memory access errors. (gscolor.c)
- - Images with CombineWithColor = true caused memory access error,
- because a structure element wasn't initialized. (gdevmrop.c)
- - gs_setnullcolor tried to return an error code, even though it was
- declared as returning void. (Why doesn't gcc catch this??) (gscolor.h,
- gscolor.c)
- - gs_setnullcolor was declared inconsistently as taking a const or
- non-const argument. (gscolor.h)
- - Small color tiles in the band list were not read in correctly.
- (gxclread.c)
- - The band list could get confused, causing ioerrors, invalid memory
- accesses, or garbled output, because the algorithms for computing the size
- of bitmaps when writing and when reading had gotten inconsistent. This code
- has been broken and "fixed" at least 4 or 5 times. (gxcldev.h, gxclbits.c,
- gxclread.c)
- - When using banding, characters that extended off the page
- vertically in the -Y direction came out garbled. (gxclimag.c)
- - The bounding box device didn't compute the box correctly for
- trapezoids. (gdevbbox.c)
- - The fastest case of rendering monochrome images could cause
- unaligned data accesses. (bug introduced recently.) (gximage.h,
- gximage1.c)
- - TrueType characters with no contours could cause an invalid memory
- access. (gstype42.c)
- - Composite TrueType characters weren't rendered properly.
- (gstype42.c)
- Adds a get_outline procedure to the Type 42 font header, to provide a
- callback for getting the outline data for a glyph. (gxfont42.h, gstype42.c)
- </pre>
- <h2><a name="Version4.34"></a>Version 4.34 (limited) (11/18/96)</h2>
- <p>
- This release adds a little more support for CID-keyed fonts and for PCL
- emulation, and a bit more of the machinery for passing images through the
- band list.
- <h3><a name="V4.34_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The RasterOp source device wasn't listed as an internal device in
- drivers.txt. (drivers.txt)
- Corrects a statement regarding the pstotext license. (new-user.txt)
- </pre><h3><a name="V4.34_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The Watcom makefile for the library didn't work properly if
- certain variables were overridden from the command line. (watclib.mak)
- - The library code inadvertently depended on an interpreter header
- file. (*.mak)
- </pre><h3><a name="V4.34_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - Some very picky compilers complained about assigning 0 to a
- variable of an enum type. (gdevpdfx.h, gdevpdf.c)
- </pre><h3><a name="V4.34_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Some very picky compilers didn't like a cast from a pointer type
- to an int type. (idebug.c)
- - Some very picky (and non-ANSI-compliant) compilers didn't allow
- assigning an int to a variable of enumerated type. (zfont2.c, zht2.c)
- - The library code inadvertently depended on an interpreter header
- file. (iref.h)
- Restructures the font building code slightly to support CID fonts better.
- (gs_cidfn.ps, bfont.h, zcid.c, zfont0.c, zfont1.c, zfont2.c, zfont42.c)
- Adds a .setcurrentfile operator to allow disk-based fonts to keep their file
- open. (gs_cidfn.ps, zcontrol.c)
- </pre><h3><a name="V4.34_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - Some very picky compilers didn't like the computation (const byte
- *)0 - 1. (stream.c)
- - A cast to ulong was omitted. (smtf.c)
- - Some compilers got confused by typedefs in the zlib header files.
- (szlibd.c, szlibe.c)
- </pre><h3><a name="V4.34_Library"></a>Library</h3><pre>
- Fixes bugs:
- - A header file didn't select the proper system header on all POSIX
- systems. (malloc_.h)
- - A subclass/superclass type discrepancy upset some compilers.
- (gsline.h, gsline.c, gxpdash.c)
- - Some very picky compilers didn't accept the previous definition of
- the offset_of macro. (stdpre.h)
- - Some very picky (and non-ANSI-compliant) compilers didn't like
- mixing int and enumerated types. (gsropt.h, gzstate.h, gdevmrop.c,
- gdevrrgb.c, gsrop.c, gxclist.c)
- - A cast was missing. (gslib.c)
- - The gs_setxxxtransparent procedures interpreted their argument
- backwards (i.e., as "opaque" rather than "transparent"). (gsrop.c)
- - Intersecting clipping paths didn't reset the logical operation to
- the default, causing a possible crash. (gsrop.h, gsrop.c, gxacpath.c)
- - Pattern accumulation didn't reset the logical operation to the
- default, possibly causing incorrect output. (gspcolor.c)
- - If a Type 1 character ended with a curve and a closepath, a
- microscopic line could result, causing output anomalies. (gstype1.c)
- - Stroking a path with a mix of thin and non-thin lines could cause
- extraneous lines to appear. (gxstroke.c)
- - Zero-width rectangles were painted even when fill adjustment was
- turned off. (gxpaint.c, gxstroke.c)
- - The algorithm for dividing a curve into monotonic pieces could
- produce incorrect results, causing anomalies when filling curved regions
- with zero fill adjustment. (gxpcopy.c)
- - The algorithms for outside clipping were wrong, causing some
- inside regions not to be clipped. (gxcpath.c)
- - The white pixels in halftones weren't treated as unconditionally
- opaque for RasterOp. (gxht.c, gxcht.c)
- - Images with RasterOp didn't work properly. (gdevmrop.c,
- gximage[2345].c, gxpcmap.c)
- - The library code inadvertently depended on an interpreter header
- file. (gxalloc.h, genarch.c)
- - An important optimization for stroking (recognizing portrait,
- landscape, and unscaled CTMs) was commented out. WE DON'T HAVE ANY RECORD
- OF WHY WE DID THIS, AND RESTORING IT MAY INTRODUCE NEW BUGS. (gxstroke.c)
- - Bitmap images with non-zero data_x values were passed through the
- band list incorrectly, possibly causing vertical "streaks" in the output.
- (gxcldev.h, gxclread.c)
- - If a curve had to be split twice along the same axis to make it
- monotonic, the split points were returned in the wrong order, possibly
- causing curved edges to turn into straight lines. (gxpcopy.c)
- Changes the debugging printout format for paths so the output can be
- processed mechanically more easily. (gxpath.c)
- Adds gs_glyphpath, like charpath but taking a glyph rather than a string of
- character codes. (gschar.h, gschar.c)
- Adds an internal concept of a "null color", a color that doesn't actually
- mark any pixels. (gscolor.h, gsdcolor.h, gxdcolor.h, gscolor.c, gxdcolor.c)
- Takes the next incremental steps towards passing images through the band
- list:
- - Implements the ability to pass some color mapping information
- (transfer functions, black generation, undercolor removal) through the band
- list. (gxclist.h, gxclimag.c, gxclist.c, gxclread.c)
- </pre>
- <h2><a name="Version4.33"></a>Version 4.33 (limited) (11/6/96)</h2>
- <p>
- This release fixes yet another obscure bug in the recently rewritten fast
- loops for image rendering. (These loops have caused more problems than any
- other single module of the entire library.) It also adds preliminary
- support for CID-keyed fonts (CIDFonts only, not CMaps yet) and some library
- extensions for supporting HP-GL/2.
- <h3><a name="V4.33_Documentation"></a>Documentation</h3><pre>
- Adds considerable new material to the C style document. (c-style.txt)
- Changes -cckr to -ansi in the SGI build procedure. (make.txt)
- Corrects an error in the description of the .type42execchar operator.
- (gs_typ42.ps)
- </pre><h3><a name="V4.33_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The 'man' pages were installed in the documentation directory as
- well as in the man directory. (unix-end.mak)
- </pre><h3><a name="V4.33_Interpreter"></a>Interpreter</h3><pre>
- Adds support for CID-keyed fonts. There is no CMap support yet, and some
- things are done with hacks. (int.mak, gs_cidfn.ps, gs_cmap.ps, ichar.h,
- zchar.c, zchar2.c, zchar42.c, zfont2.c, zfont42.c, zcid.c)
- Adds operators for accessing the new dash adaptation and dot length
- parameters in the graphics state. (gs_init.ps, zgstate.c)
- </pre><h3><a name="V4.33_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The fast case of monobit image rendering could overwrite memory.
- (gximage1.c)
- - The new fast implementation of rectfill didn't check for
- fixed-point overflow. (gsdps1.c)
- - Internally, fonts with no name all appeared to have the same name,
- possibly confusing the xfont machinery. (gxccman.c)
- - A cast to remove const was omitted, upsetting some compilers.
- (gximage1.c)
- - The driver's stroke_path routine was not called if the logical
- operation was not the default one. (gxpaint.c)
- Adds support for CID-keyed fonts. (gsccode.h, gxfont.h)
- Adds a new "dash pattern adaptation" flag in the imager state. When this
- flag is set and a dash pattern is in effect, each line segment will receive
- an integral number of repetitions of the dash pattern (if necessary, rounded
- up). (gsline.h, gxline.h, gsline.c, gsstate.c, gxpdash.c)
- Adds a new "dot length" parameter to the imager state. If this parameter is
- non-zero, it gives a length for rendering dots (zero-length lines). See
- language.txt for details. (gsline.h, gxline.h, gsline.c, gsstate.c,
- gxstroke.c)
- Extends band lists so they can handle dash pattern adaptation and dot
- length. (gxcldev.h, gxclpath.h, gxclpath.c, gxclread.c)
- Adds a floating point emulator to allow more realistic profiling of
- configurations without a FPU. (gsfemu.c)
- </pre>
- <h2><a name="Version4.32"></a>Version 4.32 (limited) (11/1/96)</h2>
- <p>
- This fixes a couple more bugs, most notably the infamous "pixel stripe" bug.
- <h3><a name="V4.32_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The documentation said that Ghostscript could not interpret
- encrypted PDF files. (language.txt)
- - A number of Ghostscript's extensions to the PostScript language
- were missing. (language.txt)
- </pre><h3><a name="V4.32_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A compiler complained about initializing an unsigned variable with
- a negative value. (gdevx.c)
- - An off-by-1 allocation error could cause memory overwriting.
- (gdevepsc.c)
- </pre><h3><a name="V4.32_Platforms"></a>Platforms</h3><pre>
- Declares a pointer 'const' that is actually only used for reading.
- (gp_unifs.c)
- </pre><h3><a name="V4.32_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - The code for adding nominal UnderlinePosition and
- UnderlineThickness entries to FontInfo assumed (incorrectly) that all Type 1
- fonts had FontBBox entries. (gs_type1.ps)
- Brings CIDFont support closer to reality. It doesn't work yet, though.
- (gs_cidfn.ps, gs_fonts.ps, gs_init.ps, gs_res.ps, gs_typ42.ps)
- </pre><h3><a name="V4.32_Interpreter"></a>Interpreter</h3><pre>
- Removes a redundant implementation of initgraphics. (gs_init.ps)
- Speeds up rectfill a little for the common case (4 numbers on the stack).
- (zdps1.c)
- </pre><h3><a name="V4.32_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Zero-width, 1-bit-deep, landscape or portrait images could
- overwrite memory ad lib. (gximage1.c)
- - A procedure was declared 'static' inconsistently, upsetting many
- compilers (but not gcc, which, in contradiction to the ANSI standard,
- doesn't check this properly). (gxcpath.c)
- - A local variable was initialized with a value computed from a
- variable that hadn't been set yet, leading to possibly incorrect coloring of
- the first run of pixels in images with 12 bits per sample. (gximage4.c)
- - A compiler complained about initializing an unsigned variable with
- a negative value. (shcgen.c)
- - A rounding problem could produce a vertical stripe of 1 (or on
- very large images possibly more) incorrect pixels at the right edge of a
- 1-bit-deep image. (gxdda.h, gximage1.c)
- Speeds up gs_rectfill substantially for the portrait/landscape case with a
- rectangular clipping region. (gsdps1.c)
- Adds a parameter so we can include gx_line_params in subclasses. (gzline.h)
- </pre>
- <h2><a name="Version4.31"></a>Version 4.31 (limited) (10/27/96)</h2>
- <p>
- This is primarily a bug fix release for 4.30, which we had hoped wouldn't be
- necessary....
- <h3><a name="V4.31_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The comment describing the order of coefficients in a CTM written
- on the band list was wrong. (gxclpath.h)
- </pre><h3><a name="V4.31_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - bug-form.txt wasn't installed by 'make install'. (unix-end.mak)
- - The default flags in ugcclib.mak didn't take the gcc code
- generation bug into account. (ugcclib.mak)
- </pre><h3><a name="V4.31_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - MetroWerks CodeWarrior predefines true and false, causing
- compilation errors on the Mac. (stdpre.h)
- </pre><h3><a name="V4.31_Interpreter"></a>Interpreter</h3><pre>
- Updates code for the change in the ENUM_PTR macros. (iscan.c)
- Changes the allocator to keep track of "lost" ref space separately, to allow
- an independent check on its activities. (gxalloc.h, ialloc.c, isave.c)
- Changes the garbage collector API slightly to allow implementation of the
- API in applications other than PostScript interpreters. (ivmspace.h,
- ireclaim.c, igc.c)
- </pre><h3><a name="V4.31_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Implements the PDF 1.1 BX and EX operators. (pdf_base.ps, pdf_main.ps)
- </pre><h3><a name="V4.31_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - Some (harmless) pointer incompatibilities upset some compilers.
- (szlibd.c, szlibe.c)
- Updates code for the change in the ENUM_PTR macros. (stream.c)
- </pre><h3><a name="V4.31_Library"></a>Library</h3><pre>
- Fixes bugs:
- - A label in the ENUM_PTR procedure generating macros was often not
- referenced, leading to compiler warnings. (gsstruct.h, gxxfont.h,
- gdevmem.c, gschar.c, gscolor2.c, gsdevice.c, gsfont0.c, gsht.c, gsstate.c,
- gxcpath.c, gximage.c)
- - Using the gstate version of setflat rather than the imager version
- caused compiler warnings (and, in some cases, errors). (gstype1.c)
- - Non-standard ImageMatrix values for banded images didn't work.
- (This wasn't actually used.) (gxclread.c)
- - imagemask with a halftone and portrait orientation colored some
- inappropriate pixels. (bug introduced in 4.30) (gximage2.c)
- - When banding, if a character straddled a band boundary the first
- time it occurred, all occurrences of it were clipped. (bug introduced in
- 4.2x or 4.30) (gxclimag.c)
- - Degenerate clipping rectangles sometimes got turned into
- non-degenerate ones by swapping the min and max coordinates. (gxcpath.c)
- - Resizing an object either allocated a new object unnecessarily
- (performance bug only), or in very rare cases could corrupt memory.
- (gsalloc.c)
- - Very small objects didn't get put on a free list when freed.
- (Performance bug only.) (gsalloc.c)
- - Some pointers were incorrectly declared 'const', upsetting some
- compilers. (gxclread.c)
- Adds more tracing output for -ZL. (gxclread.c)
- Changes the -Za tracing output slightly to aid mechanical analysis of
- allocation traces: allocation events now always include a '+', deallocation
- events always include a '-', and the address is always the address of the
- object data and not the header. (gsalloc.c, gsmemory.c)
- Changes the allocator to keep track of "lost" object and string space
- separately, to allow an independent check on its activities. (gxalloc.h,
- gsalloc.c)
- Changes the allocator to use 'memmove' in an obvious place. (gsalloc.c)
- Provides a garbage collector API at the library level to allow
- implementation of the API in applications other than PostScript
- interpreters. (gsgc.h)
- </pre>
- <h2><a name="Version4.30"></a>Version 4.30 (limited) (10/23/96)</h2>
- <p>
- The main purpose of this release is to implement a substantial change in the
- "high level" image API, after which we believe this API will be stable.
- <h3><a name="V4.30_Documentation"></a>Documentation</h3><pre>
- Documents the changes in the begin_image and image_data device procedures.
- (drivers.txt)
- </pre><h3><a name="V4.30_Drivers"></a>Drivers</h3><pre>
- Speeds up the PDF writer a little by reducing the amount of allocation,
- which was causing very frequent garbage collections. (gs_pdfwr.ps,
- gdevpdft.c)
- Updates the PDF writer for the change in begin_image/image_data.
- (gdevpdfi.c)
- </pre><h3><a name="V4.30_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - Some versions of the SGI IRIX compiler have a bug that causes them
- to try to expand macros that require arguments even when the macro name
- isn't followed by a left parenthesis. (gdevsgi.h, gdevsgi.c)
- - The IBM RS6000 compilers now provide <stdlib.h>, so our
- definitions of malloc and free caused a conflict. (malloc_.h)
- </pre><h3><a name="V4.30_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - Many Fontmaps included obsolete references to an old
- Helvetica-Narrow font. (Fontmap.*)
- Makes the GS_FONTPATH directory scanner a little more liberal about what
- files it examines: it will now examine any file whose first line begins with
- %!PS-Adobe or %!FontType. (gs_fonts.ps)
- To match an apparent Adobe convention, augments findfont so that if a font
- isn't in the Fontmap, it will try to load a file whose name is the same as
- the font name. (gs_fonts.ps)
- To make some questionable Apple font inquiry code work, augments the
- FAKEFONTS facility so that it sets the FontType of fake fonts to 1.
- (gs_fonts.ps)
- </pre><h3><a name="V4.30_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - .checkpassword, .putdeviceparams, .putdevparams, setsystemparams,
- and setuserparams didn't free the results byte array, causing a memory leak
- (until the next garbage collection). (zdevice.c, ziodev.c, zusparam.c)
- </pre><h3><a name="V4.30_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The code for emulating floating point multiplication with
- conversion to fixed point didn't detect overflow correctly, which could
- produce incorrect results instead of a limitcheck. (gsmisc.c)
- - A macro cast a pointer incorrectly, leading to spurious compiler
- warnings. (gxfixed.h)
- - The code for emulating fixed-to-float conversion computed the
- exponent incorrectly. (gsmisc.c)
- - The algorithm for advancing a DDA a given number of steps (not
- actually used anywhere before this version) was wrong. (gxdda.h)
- - The clipping box returned by clipping devices was incorrect,
- causing parts of the page to disappear. (bug introduced in 4.20)
- (gxcpath.c)
- Changes the begin_image and image_data device procedures:
- - begin_image now takes an optional subrectangle instead of a set of
- shape flags.
- - image_data now always takes complete rows of pixels, takes a
- source X offset, and returns 1 when it has received all the data.
- The change in begin_image and image_data is a NON-BACKWARD-COMPATIBLE CHANGE
- IN A PUBLIC INTERFACE; however, this interface was still designated "subject
- to change", per the notes for release 3.67 and the documentation in
- drivers.txt. (gsiparam.h, gxclpath.h, gxdda.h, gxdevice.h, gximage.h,
- gdevbbox.c, gdevnfwd.c, gsimage.c, gxclimag.c, gxclread.c, gximage.c,
- gximage?.c)
- </pre>
- <hr>
- <h2><a name="Version4.21"></a>Version 4.21 (limited) (10/17/96)</h2>
- <p>
- The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20.
- <h3><a name="V4.21_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The Ghostscript man page had a .TH in the middle. (gs.1)
- </pre><h3><a name="V4.21_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - The shared version of zlib was always called libgz; on most
- systems, it is now called libz (but not on Red Hat Linux, where libz is a
- library for dealing with time zones). (*.mak, gs.mak, libpng.mak, zlib.mak)
- - The pdf2dsc.1 man page wasn't installed on Unix systems.
- (unix-end.mak)
- - font2c generated procedures named gsf_xxx, but genconf assumed
- they were named gs_f_xxx. (int.mak)
- </pre><h3><a name="V4.21_Drivers"></a>Drivers</h3><pre>
- Updates the user-contributed LBP-8II driver to correct unspecified problems.
- (gdevlbp8.c)
- Adds a user-contributed driver for Avance Logic SuperVGA cards.
- (gdevsvga.c, devs.mak)
- </pre><h3><a name="V4.21_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - On Windows NT, a 32-bit parameter was truncated to 16 bits,
- preventing drawing of scroll bars of the image window when the window is
- uncovered. (dwimg.cpp)
- </pre><h3><a name="V4.21_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - The free URW Grotesk and Antiqua fonts were omitted from the
- distribution.
- </pre><h3><a name="V4.21_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Defining a new global instance of a built-in resource
- (ColorRendering, ColorSpace, Form, Halftone, Pattern, ProcSet) caused an
- invalidaccess error. (gs_res.ps)
- - pathbbox with no current path left an extra item on the stack when
- the error occurred. (gs_init.ps)
- - findresource for an undefined resource instance didn't preserve
- the contents of the stack. (gs_res.ps)
- Adds a new file providing a procedural interface with a very rudimentary
- form of job encapsulation. (gserver.c)
- Changes the initial value of MaxOpStack to 20000, for the sake of a few
- badly-behaved files. (gs_init.ps, pdf_base.ps)
- </pre><h3><a name="V4.21_Library"></a>Library</h3><pre>
- Fixes bugs:
- - If the image operators failed to allocated their bookkeeping
- structure, the result was a crash rather than VMerror. (gximage.c)
- - gx_default_fill_triangle (currently used only to implement the
- fastest case of stroke) had a typo that could cause a numeric exception or
- incorrect output, and another typo that could produce incorrect output.
- (gdevddrw.c)
- - When banding, if the first occurrence of a character fell partly
- off the page, all occurrences of that character on the page could be clipped
- or mangled. (gxclbits.c, gxclimag.c)
- - When testing whether it's worthwhile compressing a bitmap for
- banding, the compressor was allowed to generate a lot more output than
- needed to make the test. (gxclbits.c)
- - Certain cases of unrotated gray-scale images dropped the first or
- last pixel of each scan line. (gximage2.c)
- - In rare cases, a run of pixels in a image could get erroneously
- displayed in the same color as the previous run, because of a cache
- bookkeeping bug. (gximage3.c)
- - The sample driver for the library had gotten inconsistent with a
- header file. (gslib.c)
- - A declaration was followed by an extraneous semicolon, which upset
- some compilers. (gxht.h)
- - Missing parentheses caused a test for thin lines to be incorrect.
- (gxstroke.c)
- </pre>
- <h2><a name="Version4.20"></a>Version 4.20 (limited) (10/13/96)</h2>
- <p>
- This release has internal changes for future support of banded image
- processing, but no externally visible changes. Its primary purpose is to
- incorporate speedups for clipped images. It does *not* incorporate fixes
- for all problems reported in 4.0x or 4.10.
- <h3><a name="V4.20_Documentation"></a>Documentation</h3><pre>
- Documents the new get_clipping_box device procedure. (drivers.txt)
- </pre><h3><a name="V4.20_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - There were many, many minor inconsistencies between the makefiles
- and the source code. (We finally have an automated tool to detect these.)
- (devs.mak, int.mak, lib.mak, unixtail.mak; gsutil.c, zwppm.c)
- - Some makefile rules weren't properly terminated by a blank line.
- (lib.mak)
- </pre><h3><a name="V4.20_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - The comments in gslp.ps had gotten out of date. (gslp.ps)
- Adds --no-eject-file and --no-eject-formfeed switches to gslp.ps, to allow
- packing files in multi-column printouts. (gslp.ps)
- </pre><h3><a name="V4.20_Drivers"></a>Drivers</h3><pre>
- Adds a user-contributed driver for the Epson LP-8000 laser printer.
- (gdevlp8k.c)
- Adds a DisplayMode parameter to the vgalib device. (gdevvglb.c)
- Removes the requirement of typing a character at the end of each page using
- the vgalib driver. THIS IS A USER-VISIBLE, NON-BACKWARD-COMPATIBLE CHANGE.
- (gdevvglb.c)
- </pre><h3><a name="V4.20_Interpreter"></a>Interpreter</h3><pre>
- Updates code to accommodate the new get_clipping_box device procedure.
- (zupath.c)
- </pre><h3><a name="V4.20_Library"></a>Library</h3><pre>
- Fixes bugs:
- - When a CTM was passed through the band list, it didn't get
- translated to match the band coordinate system. (This had no effect,
- because the translation part of the CTM was never used.) (gxclread.c)
- Adds a ',' debugging switch to disable high-level operations when banding.
- (gxclpath.c)
- Adds an optional get_clipping_box device procedure, so that filling and
- stroking can clip more aggressively. (gdevmem.h, gdevprn.h, gxdevice.h,
- gxpaint.h, gxpath.h, gzacpath.h, gdevdflt.c, gdevht.c, gdevnfwd.c,
- gxacpath.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c, gxfill.c,
- gxstroke.c)
- Speeds up clipped filling and stroking, by checking against the device
- clipping box. (gxfill.c, gxstroke.c)
- Adds the ability to clip with a rectangle a clipping path being accumulated,
- and uses it to do more aggressive clipping when banding. (gzacpath.h,
- gxacpath.c, gxclread.c)
- Speeds up clipping of objects lying partly above or below the clipping
- region. (gxcpath.c)
- Speeds up clipping vertically-oriented objects (such as 90 degree rotated
- images or vertical rectangles) with convex clipping regions, by checking for
- vertical rectangles contained in multiple clipping rectangles. (gxcpath.c)
- Speeds up the handling of 90 degree rotated gray-scale images. (gximage2.c)
- Enhances the band list so that it can contain commands for a range of bands,
- not just a single band or all bands. (gxcldev.h, gxclist.h, gxclbits.c,
- gxclist.c, gxclread.c)
- Adds an operation to the DDA structure, for eventual support of clipped
- images. (gxdda.h)
- Factors out some macros useful for generating bit-transformation tables.
- (gsbittab.h, gsbittab.c, gsflip.c)
- </pre>
- <hr>
- <h2><a name="Version4.10"></a>Version 4.10 (limited) (9/25/96)</h2>
- <p>
- This release adds local garbage collection, and a number of performance
- improvements for garbage collection in general. We will support it for one
- or two OEMs, but it is not a public release.
- <h3><a name="V4.10_Documentation"></a>Documentation</h3><pre>
- Moves documentation for all releases before 4.0 to history3.txt. (NEWS,
- history3.txt)
- </pre><h3><a name="V4.10_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - pdf2dsc.ps didn't have a proper license notice. (pdf2dsc.ps)
- </pre><h3><a name="V4.10_Drivers"></a>Drivers</h3><pre>
- Adds a psgray driver, like psmono, to produce 8-bit gray PostScript (level
- 1) images. (devs.mak, *.mak, gdevpsim.c)
- Changes the psmono driver to allow runs of up to 255 repeated bytes.
- (gdevpsim.c)
- </pre><h3><a name="V4.10_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - setdevice erased the page even if this wasn't necessary.
- (zdevice.c)
- Speeds up the garbage collector, primarily by speeding up pointer
- relocation. (int.mak, ipacked.h, iref.h, ialloc.c, igc.c, igcref.c)
- Actually implements local garbage collection. (igc.h, ivmspace.h, igc.c,
- igcref.c, igcstr.c, ireclaim.c)
- Adds some additional error checking for the -Z? switch. (ilocate.c)
- Moves a utility for color mapping from the interpreter to the library.
- (icolor.h, zcolor.c)
- Adds a MinScreenLevels user parameter. (zusparam.c)
- </pre><h3><a name="V4.10_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Adds partial support for the PDF 1.2 gs operator, reverse engineered from a
- PDF 1.2 file. (pdf_draw.ps)
- </pre><h3><a name="V4.10_Library"></a>Library</h3><pre>
- Fixes bugs:
- - The test for "thin" stroked lines incorrectly claimed some
- non-thin lines were thin. (gxstroke.c)
- - The computations for halftone cells didn't work for non-square
- pixels. (gxdht.h, gsht.c, gsht1.c, gshtscr.c)
- Speeds up the garbage collector a little. (gsstruct.h, gxalloc.h,
- gxfcache.h, gsfont.c)
- Replaces references to private statically allocated color spaces with
- references to shared dynamically allocated ones, which are guaranteed to be
- fully filled-in. (gscie.c)
- Moves a utility for color mapping from the interpreter to the library.
- (gxfmap.h, gxcmap.c)
- Makes available an imager analogue of setmatrix. (gscoord.h, gscoord.c)
- Adds a parameter to control the minimum number of halftone screen levels.
- If a halftone cell has fewer pixels than this number, it will be replicated
- (similar to what AccurateScreens does) until the replicated screen has
- enough levels. (gxht.h, gshtscr.c)
- </pre>
- <hr>
- <h2><a name="Version4.03"></a>Version 4.03 (9/23/96)</h2>
- <p>
- This was an emergency re-release of 4.02 to fix the stdin redirection
- problem. It has essentially no other changes.
- <h3><a name="V4.03_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Solaris 2.x has /usr/ucb/install, not installbsd. (make.txt)
- Updates current.txt to mention the ability to share libpng and libgz.
- (current.txt)
- </pre><h3><a name="V4.03_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - A rule assumed that the makefile was named `makefile'.
- (unixtail.mak)
- </pre><h3><a name="V4.03_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The stcolor drivers had an off-by-1 error that could cause them to
- write into unallocated memory. (gdevstc.c)
- - The Imagen driver wouldn't compile with gcc. (gdevimgn.c)
- </pre><h3><a name="V4.03_Fonts"></a>Fonts</h3><pre>
- Fixes bugs:
- - The Solaris fontmap had gotten out of date. (Fontmap.Sol)
- </pre><h3><a name="V4.03_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - The test for stdin being non-seekable could leave the file error
- flag set, which caused an infinite loop when trying to read from the file
- later. (sfile.c, sfileno.c)
- </pre>
- <h2><a name="Version4.02"></a>Version 4.02 (9/19/96)</h2>
- <p>
- This release fixes a few more bugs, and adds the ability to read encrypted
- PDF files and some PDF 1.2 files.
- <p>
- This release was withdrawn after a few days because the stdin redirection
- fix, which was made at the last minute, cause Ghostview to hang.
- <h3><a name="V4.02_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - The list of required support files was incorrect. (install.txt)
- - The descriptions of file name lookup weren't accurate. (use.txt)
- - A J should have been an H. (gxbitmap.h)
- Updates the documentation about encrypted PDF files. (new-user.txt)
- Documents what the 13 base PDF fonts are. (ps2pdf.txt)
- Fixes a tiny typo. (c-style.txt)
- Adds a user-contributed man page for the new pdf2dsc script. (pdf2dsc.1)
- Updates the government restricted rights notice in the Aladdin Ghostscript
- Free Public License. (PUBLIC)
- Adds the URL of test files to the bug report form. (new-user.txt)
- Puts the bug reporting form in a separate file. (readme, bug-form.txt,
- new-user.txt)
- Notes that map_xxx_color procedures should not return gx_no_color_index.
- (drivers.txt)
- Notes that Ghostscript supports the Flate filters. (language.txt)
- Documents the use of the system libpng and zlib. (make.txt, gs.mak)
- Notes that Borland C++ 5.0 and 5.01 will not compile Ghostscript correctly.
- (make.txt)
- </pre><h3><a name="V4.02_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Using both DELAYBIND and SAFER caused problems. (pstotext uses
- DELAYBIND.) (gs_init.ps)
- </pre><h3><a name="V4.02_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - Some pdf2ps machinery interfered with the PDF interpreter.
- (pdf_2ps.ps, pdf_main.ps)
- - In the output of pdf2ps, page numbers in link destinations were
- too high by 1. (pdf_main.ps)
- - viewpbm didn't handle value ranges other than [0..255] correctly.
- (viewpbm.ps)
- Adds a user-contributed shell script to invoke pdf2dsc.ps. (pdf2dsc,
- unix-end.mak)
- Adds a switch to the genconf utility to set the prefix for generated
- procedure names. (genconf.c)
- Adds the option of using system libraries (possibly shared) for libpng
- and/or zlib. (*head.mak, msc*.mak, os2.mak, tccommon.mak, wccommon.mak;
- libpng.mak, zlib.mak)
- </pre><h3><a name="V4.02_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - The X11 display devices ignored the -DA4 compile-time option.
- (gdevx.c)
- - The garbage collector could scramble the state of the CGM drivers.
- (gxdevice.h, gdevcgm.c)
- - An identifier of more than 31 characters upset the VAX DEC C
- compiler. (gdevcgml.h, gdevcgml.c)
- - In case of an error in trying to set the CoreDistVersion distiller
- parameter, a variable could be used without initialization. (gdevpdfp.c)
- - When DEBUG is selected, the X Windows driver referenced _Xdebug,
- which is not defined in (at least the VMS version of) DECWindows. (x_.h,
- gdevxini.c)
- - Some map_cmyk_color implementations could return "transparent".
- (gdevbit.c)
- - Setting GraphicsAlphaBits or TextAlphaBits in the P*M drivers
- caused an error. (gdevpbm.c)
- - If a user cancelled printing under MS Windows, a confusing error
- resulted, and a temporary file wasn't deleted. (gdevwpr2.c)
- - The map_color_rgb procedure for the bit devices produced incorrect
- results. (This probably had no effect in practice.) (gdevbit.c)
- - The os2prn device produced incorrect output. (gdevos2p.c)
- - The OS/2 PM device didn't detect PM applications correctly.
- (gdevpm.c)
- - The MS Windows printer driver didn't automatically detect the
- printer's color capabilities. (gdevwpr2.c)
- - The BJC-610 driver didn't print at 720 dpi. (gdevcdj.c)
- - The static prototypes of many devices didn't include the far_data
- keyword. (gdev3852.c, gdev4081.c, gdevbgi.c, gdevcgm.c, gdevht.c,
- gdevimgn.c, gdevl256.c, gdevmrop.c, gdevn533.c, gdevnfwd.c, gdevnp6.c,
- gdevo182.c, gdevpcfb.c, gdevpdf.c, gdevpe.c, gdevpm.c, gdevs3ga.c,
- gdevsnfb.c, gdevsppr.c, gdevsun.c, gdevsvga.c, gdevtknk.c, gdevvglb.c,
- gdevwddb.c, gdevwprn.c, gdevx.c, gdevxalt.c)
- - The (original) deskjet driver collapsed print lines towards the
- left margin. (gdevdjet.c)
- Adds to the pgm/pgnm/ppm/pnm[raw] drivers the ability to set the maximum
- pixel value, by setting any of the Gray/Red/Green/BlueValues device
- parameters. (gdevpbm.c)
- Adds pkm[raw] drivers, which do all their internal computations in CMYK and
- convert the data to RGB as they write the file. (gdevpbm.c)
- </pre><h3><a name="V4.02_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The VMS script referred to old versions of the third-party
- libraries. (vms.mak)
- - Under VMS with DEC C, attempting to open a new file fails.
- (gp_vms.c)
- - If you tried to print (gp_printfile) under Windows on a system
- with no printers installed, Ghostscript caused a GPF. (gp_mswin.c)
- Restores support for a non-DLL MS Windows platform. (bcwin32.mak,
- dwnodll.cpp)
- Adds a new MS Windows DLL call, gsdll_get_bitmap. (gsdll16.def,
- gsdll32.def, dll.txt, gdevwdib.c)
- Fixes a variety of other small Windows- and OS/2-related problems, mostly
- related to printing. (gp_mswin.h, dpmainc.c, dwmain.cpp, dwmainc.cpp,
- gdevmswn.c, gdevpm.c, gdevwpr2.c, gp_mswin.c)
- </pre><h3><a name="V4.02_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - The value of /newerror in $error was true at the end of
- initialization. We now reset it after each internal use of stopped if
- necessary. (gs_dps1.ps, gs_fform.ps, gs_fonts.ps, gs_init.ps, gs_pdf.ps,
- gs_res.ps, gs_type1.ps)
- - setpagedevice (and finddevice) didn't recognize Default.
- (gs_init.ps)
- - When running with -dNODISPLAY, calling gssetresolution would cause
- a crash. (gs_init.ps)
- - A particular combination of save, .forgetsave, and garbage
- collection could cause a memory access error in restore. (isave.c)
- - Some references to systemdict were affected if a user redefined
- the name /systemdict. (gs_cmdl.ps, gs_fonts.ps, gs_kanji.ps, gs_dps1.ps,
- gs_init.ps, gs_res.ps, gs_statd.ps, gs_type1.ps)
- - The insideness testing operators caused an invalid memory access.
- (drivers.txt, zupath.c)
- - If a readline reached an input buffer boundary between the \r and
- \n of a 2-character EOL, an error could occur. (zfileio.c)
- - setdevparams caused an error. (gs_lev2.ps)
- Changes file names beginning with ./ or ../ so they are recognized as
- "absolute" and not subject to the search path. (gp_dosfs.c, gp_ntfs.c,
- gp_os2.c, gp_unifn.c)
- Changes the exit code for -h or --help from 0 to 1, so an invoking program
- will keep the output around for the user to look at. (imainarg.c)
- Adds the FlateEncode and FlateDecode filters; adds PNG pixel prediction to
- the LZW filters. These additions are required for PDF 1.2 and will be part
- of PostScript Level 3. (int.mak, lib.mak, zfdecode.c, zfilter2.c, zfzlib.c,
- zfpngp.c [deleted])
- </pre><h3><a name="V4.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
- Fixes bugs:
- - The copyright notices on some files didn't mention the Aladdin
- free license. (pdf_*.ps)
- - Some references to systemdict were affected if a user redefined
- the name /systemdict. (pdf_font.ps)
- - The value of /newerror in $error was true at the end of
- initialization. We now reset it after each internal use of stopped if
- necessary. (pdf_main.ps)
- - stdin redirection failed for PDF files even if the new stdin was
- seekable. (pdf_main.ps)
- - The Rotate key rotated pages in the wrong direction.
- (pdf_main.ps)
- Adds a minimal "security socket" to the interpreter. This does not include
- any actual decryption code; such code is available elsewhere (see
- new-user.txt). (int.mak, pdf_base.ps, pdf_main.ps, pdf_sec.ps)
- Adds a PDF 1.2 capability:
- - The destination in a Dest array can be a page number as well as a
- page object. (pdf_main.ps)
- </pre><h3><a name="V4.02_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - stdin was assumed to be non-seekable. (sfile.c, sfileno.c)
- </pre><h3><a name="V4.02_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Garbage collection could corrupt a pointer in Type 0 fonts.
- (gxfont0.h, gsfont0.c)
- - When applying hints to a Type 1 font outline, the last point could
- sometimes get moved twice, causing output anomalies. (gxhint3.c)
- - An #include needed for debugging was missing. (gxcmap.h)
- - Graphics states included a no-longer-used private color space
- object. (gsstate.c)
- - Images could get clipped randomly in the X direction. (I don't
- understand why this problem hasn't shown up more often, since it's been
- there since release 4.00.) (gximage.c)
- - The arct and arcto operators failed to draw the line to the
- starting point of the arc. (bug introduced in 4.01) (gspath1.c)
- - Prefix subclasses of simple structures caused an invalid memory
- access. (gsstruct.h)
- - The variable fheight was sometimes unused. (gstype1.c)
- - igcd and imod didn't have prototypes in an appropriate header
- file, and were declared extern in several places. (gsdcolor.h, gsline.h,
- gxarith.h, gxdht.h, gsht.c, gshtscr.c, gsimage.c, gsline.c, gstype1.c,
- gxclimag.c)
- - When using a non-identity RenderTable in a CIE rendering
- dictionary, all colors came out too light. (gscie.c)
- - When using anti-aliased graphics, stroked lines were rendered too
- thin. (gspaint.c)
- - The default map_cmyk_color implementations could return
- "transparent". (gxcmap.c)
- - The number of bits of alpha requested when rendering anti-aliased
- characters could exceed 4. (gschar.c)
- - Multi-screen halftones could cause errors or infinite looping when
- banding. (This problem predates 4.0; I don't know why it didn't show up
- before.) (gxcldev.h, gxclist.c, gxclread.c)
- - Skewed or rotated gray-scale images, or masks with a halftoned
- color, omitted one line of pixels and displaced the image by one pixel.
- (gximage2.c)
- Adds an implementation of realloc, for systems that don't have one that
- works. I don't know how to determine this automatically, so for the moment,
- the code uses our own implementation on Linux (where realloc is known to be
- broken, at least in some releases) and nowhere else. (malloc_.h,
- gsmemory.c, gsmisc.c)
- Removes the "OLD" algorithms from the Type 1 hinting source code, since they
- are no longer executed. (If necessary, they can be retrieved from an older
- version.) (gxhint3.c)
- </pre>
- <h2><a name="Version4.01"></a>Version 4.01 (7/10/96)</h2>
- <p>
- This fixes a few minor bugs discovered since the 4.0 release.
- <h3><a name="V4.01_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - An installation directory name was wrong. (make.txt,
- unix-lpr.txt)
- - A URL was wrong. (devices.txt)
- - A reference to use.doc hadn't been updated. (gs.1)
- - Some references to /usr/local/lib hadn't been updated. (gs.1)
- - The NEWS file and history* files still referred to *.doc rather
- than *.txt. (NEWS, history*.txt)
- Adds a note about compilation on Digital Unix. (make.txt)
- Clarifies that calling gs_exit calls gs_finit automatically. (imain.h)
- Adds a pointer to the PDF encryption patch. (Ridiculous U.S. export control
- laws don't allow including the patch itself in the main fileset.)
- (new-user.txt)
- Adds a help file for VMS. (gs-vms.hlp)
- </pre><h3><a name="V4.01_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - vms.mak had gotten out of sync with the makefiles (again).
- (vms.mak)
- - DEVICE{WIDTH,HEIGHT}POINTS didn't override PAPERSIZE.
- (gs_init.ps)
- - The Microsoft C makefiles had gotten out of date. (msc.mak)
- The (few) GNU-Licensed drivers were accidentally omitted from the fileset.
- Modifies a makefile for greater reusability. (watclib.mak)
- Adds a 'debug' target for making Unix debugging configurations.
- (unix-end.mak)
- </pre><h3><a name="V4.01_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - Some uses of 'run' should be changed to runlibfile. (bdftops.ps,
- impath.ps, markhint.ps, packfile.ps, showchar.ps, waterfal.ps, wftopfa.ps,
- wrfont.ps)
- - Some debugging code hadn't been removed. (gslp.ps)
- Adds a new utility, viewcmyk.ps, for viewing 4-bit CMYK data. (psfiles.txt,
- unix-end.mak, viewcmyk.ps)
- Improves pdf2dsc by including Title and CreationDate DSC comments (these are
- displayed by Ghostview) and reducing the size of typical output files by a
- factor of about 3. (pdf2dsc.ps)
- Incorporates major changes (claimed to be improvements) to ps2ascii
- contributed by a user. If you have problems with it, please contact him,
- not Aladdin. (ps2ascii.ps)
- </pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The X value of a bounding box could be computed incorrectly.
- (gdevbbox.c)
- </pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - The Windows DLL sometimes didn't clean up properly. (dll.txt,
- dpmainc.c, dwdll.cpp, dwmain.cpp, dwmainc.cpp, gsdll.c, gsdll.h)
- </pre><h3><a name="V4.01_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - Reading from a filter could hang forever, because a buffer was
- allocated 1 byte too small. (zfilter.c)
- - The search path could become garbage under some circumstances.
- (imain.c)
- - A dangling reference to a stack-allocated variable could corrupt
- memory if a client mixed interpreter calls and direct C calls. (interp.c)
- - Printing an object to a procedure-based filter could cause an
- invalid memory access. (zfileio.c)
- </pre><h3><a name="V4.01_Library"></a>Library</h3><pre>
- Fixes bugs:
- - Setting parameters for an unopened device could cause an access
- error or invoke the wrong put_params procedure. (gsdparam.c)
- - Reading from a filter could hang forever, because a buffer was
- allocated 1 byte too small. (stream.h)
- - If the current device was the nullpage device, doing a [g]save,
- selecting a different device, and doing a [g]restore caused an error.
- (gsdparam.c)
- Adds the ability to append arcs without the initial lineto, for PCL
- emulation. (gspath.h, gspath1.c)
- </pre>
- <h2><a name="Version4.0"></a>Version 4.0 (6/28/96)</h2>
- <p>
- This is the first public release since 3.53, with a few more last-minute
- patches beyond 3.70.
- <h3><a name="V4.0_Documentation"></a>Documentation</h3><pre>
- Fixes bugs:
- - Many makefiles still referred to .doc files rather than .txt.
- (cfonts.mak, devs.mak, gs.mak, int.mak, libpng.mak, unix-end.mak, watc.mak,
- watcwin.mak, wccommon.mak, zlib.mak)
- - Some FONTPATH-related information was out of date. (use.txt)
- - The installation directory for fonts was incorrect. (install.txt)
- - The libpng and zlib versions were out of date. (libpng.mak,
- zlib.mak)
- - Some information about GSview was incorrect or incomplete.
- (new-user.txt)
- - make.txt said it described installation as well as building.
- (make.txt)
- Notes that the current release of zlib won't compile and link correctly with
- Sun cc. (make.txt)
- Adds a little more detail to the C style document. (c-style.txt)
- </pre><h3><a name="V4.0_Procedures"></a>Procedures</h3><pre>
- Fixes bugs:
- - Some documentation files weren't installed. (unix-end.mak)
- - Some dependencies were incorrect. (bcwin32.mak)
- - 'make begin' and 'make clean' deleted too many and/or the wrong
- files. (bcwin.mak, bcwin32.mak)
- - libpng.mak didn't work with libpng version 0.89c. (libpng.mak)
- - -d<var>=<name> was equivalent to -d<var>=/<name>, and there was no
- way to set a variable to true, false, or null. (use.txt, gs_init.ps,
- iinit.c, imainarg.c)
- Removes the modules.lis file, which is no longer used.
- Undoes detecting automatically the need to run tar_cat -- the mechanism
- didn't work, and caused confusion. (unix-end.mak)
- Updates the makefiles to libpng version 0.89, but allows them to work with
- either 0.88 or 0.89. (*.mak)
- </pre><h3><a name="V4.0_Utilities"></a>Utilities</h3><pre>
- Fixes bugs:
- - Showing the details of a protected font caused an error.
- (markhint.ps)
- </pre><h3><a name="V4.0_Drivers"></a>Drivers</h3><pre>
- Fixes bugs:
- - A copyright notice was wrong. (gs_pdfwr.ps)
- - PDF link annotations could get written with two Dest keys.
- (gdevpdfm.c)
- - MakeProcInstance and FreeProcInstance were called on platforms
- where it wasn't appropriate. (gdevwpr2.c, gdevwprn.c, gp_mswin.c)
- - On X servers that return very large values for the "virtual
- screen" size in millimeters but correct values for the screen size in
- pixels, a rangecheck could occur. (gdevxini.c)
- - The bounding box device could return garbage if stroke or fill was
- ever invoked with an empty path. (gdevbbox.c)
- Replaces the LBP8 driver with a revised one contributed by a user.
- (gdevlbp8.c, devs.mak)
- </pre><h3><a name="V4.0_Platforms"></a>Platforms</h3><pre>
- Fixes bugs:
- - Some Windows menu parameters were incorrect. (gsdll16.rc,
- gsdll32.rc)
- </pre><h3><a name="V4.0_Interpreter"></a>Interpreter</h3><pre>
- Fixes bugs:
- - .getdevparams sometimes returned duplicate entries for /Type.
- (ziodev2.c)
- - File names weren't parsed or concatenated properly on all
- platforms. (gs_fonts.ps, zfile.c)
- - Filter lookahead caused problems with special files. (zfproc.c)
- - If a TransformPQR procedure in a CIE color rendering dictionary
- didn't pop its 4 array arguments, an error occurred. (gs_lev2.ps, zcrd.c)
- </pre><h3><a name="V4.0_Streams"></a>Streams</h3><pre>
- Fixes bugs:
- - Filter lookahead caused problems with special files. (bug
- introduced in 3.70) (stream.h)
- </pre><h3><a name="V4.0_Library"></a>Library</h3><pre>
- Fixes bugs:
- - .getdevparams sometimes returned duplicate entries for /Type.
- (gxiodev.h, gsiodev.c)
- </pre>
- <!-- [3.0 begin visible trailer] =========================================== -->
- <hr>
- <p>
- <small>Copyright © 1996, 1997, 1998 Aladdin Enterprises.
- All rights reserved.</small>
- <p>
- <small>This file is part of AFPL Ghostscript. See the
- <a href="Public.htm">Aladdin Free Public License</a> (the "License") for
- full details of the terms of using, copying, modifying, and redistributing
- AFPL Ghostscript.</small>
- <p>
- <small>Ghostscript version 7.04, 31 January 2002
- <!-- [3.0 end visible trailer] ============================================= -->
- </body>
- </html>
|