Распрацоўшчыкі, якія выкарыстоўваюць Элк можа дастаўляць прыкладанні з рознымі кампанентамі, напісанымі на розных мовах, такіх як эфектыўнае ядро ? напісаны на C або C + + і пашыраецца карыстацкі інтэрфейс пласта ажыццяўляецца на схеме. Каб спрыяць стварэнню гібрыдных архітэктур прыкладанняў, Элк падтрымлівае шчыльна вязаць міжсеткавага ўзаемадзеяння ў C / C + + часткі прыкладанняў з кодам Scheme.
Элк таксама карысныя ў якасці аўтаномнага схема рэалізацыі, у прыватнасці, у якасці платформы для хуткага прототипирования, заснаваная на X11 праграмы Scheme.
Праект Элк было пачата ў 1987 годзе для падтрымкі ISOTEXT, рэдактар ? мультымедыйных дакумент, які быў распрацаваны ў Тэхнічным універсітэце Берліна. Першы свабодна даступнай версіі, Элк 1.0, была апублікавана ў USENET ў верасні 1989 года. З тых часоў, лось быў паспяхова выкарыстаны ў якасці асновы мова пашырэнняў для шматлікіх прыкладанняў (камерцыйныя прадукты, а таксама праектаў вольнага праграмнага забеспячэння).
Новае ўяўленне аб'екта быў прапанаваны Крэйг Макфитерс, якія таксама спрыялі першапачатковы набор патчаў. Яе перавагамі з'яўляюцца:
Новы C / C + + кіраўніцтва праграміста з'яўляецца поўная спецыфікацыя C / C + + інтэрфейс для Элк, ён прызначаны для аўтараў пашыраецца, Элк-прыкладанняў і для пашырэння пісьменнікаў. Тэмы вар'іруюцца ад агульнай архітэктуры пашыраемым прыкладанняў і выкарыстанне дынамічнай загрузкі на перадавыя тэхналогіі, такія як слабыя структуры дадзеных і супрацоўніцтва з зборшчык смецця.
Акрамя таго новага ў Элк 3,0 з'яўляецца POSIX-стылі рэгулярнае пашырэнне выразы. Элк была партавана на некалькі новых платформаў (у тым ліку Linux, BSD / OS, AIX 4.1, HP-UX 10,0). Поўны спіс змен у размеркаванне (гл. тэкставыя файлы ЗМЯНЕННЯ і MIGRATE ).
Дынамічныя нагрузкі ў Элк падтрымліваецца на розных платформах і не абмяжоўваецца dlopen () інтэрфейсу. Элк забяспечвае аўтаматычную ініцыялізацыю дынамічна загружаных пашырэнняў і клапоціцца пра C + + статычныя канструктары / деструкторы убудаваных у аб'ектных файлаў.
Замарожванне поўнасцю наладзіць прыкладання ў выкананыя файлы. Элк прадастаўляе новая схема прымітыўная дампа, які замярзае дынамічнае выява час працы перакладчыка Схема ў выкананы файл (у тым ліку якія агароджваюць заяву, калі маецца). Гэты механізм нагадвае unexec () у Emacs, але новы выкананы выкананне аднаўляецца шляхам звароту з выкліку на звалку, з дапамогай якога быў створаны выкананы (не ў адрозненне ад відэльца ( у UNIX). Дынамічная загрузка і звалкі павелічэння зручнасці Элк ў якасці асновы складаных прыкладанняў.
Магутны C / C + + інтэрфейс для моўнага ўзаемадзеяння. Элк прадугледжвае цесную інтэграцыю C / C + + ядро ??прыкладанняў (або пашырэння) з пашырэннем мовы. Праграмы могуць вызначаць свае ўласныя прымітывы Схема (трох дысцыплінах выкліку падтрымліваюцца), вызначыць для асобнага дадатку першага класа Схема тыпаў з заказной друкаваць і чытаць функцый, пераўтварэнні аб'ектаў паміж тыпамі Схемы і C / C + + тыпы рознымі спосабамі, ажыццяўляць слабых структур дадзеных, Схема павышэння памылкі, вызначыць схему зменных і сімвалаў, ацэнкі S-выразаў закадзіраваны як радкі З, і выкарыстоўваць зборшчык смецця.
Поўны прывязкі Схема для X11 і Motif. Некалькі дынамічна загружаныя пашырэння забяспечваюць поўны доступ Схемы X11/OpenWindows Xlib, каб праграміст інтэрфейс прымянення ўбудаваных Xt, і Афіна і OSF / Motif наборы віджэтаў. Выкарыстаньне гэтых пашырэньняў, графічных карыстацкіх інтэрфейсаў з Элк-прыкладанняў можа быць пабудаваная цалкам на пашырэнне мовы.
UNIX інтэрфейсам. Элк забяспечвае схема доступу да найбольш UNIX сістэмныя выклікі і агульныя функцыі бібліятэкі C. Пашырэнне UNIX падтрымлівае шырокі спектр розных платформаў UNIX, не абмяжоўваючы яго функцыянальнасць да найменшай агульнага назоўніка або POSIX 1003.1 функцый.
Стоп-і-копіі і пакаленнямі, дадатковых збору смецця. Элк выкарыстоўвае два збору смецця стратэгіі выбару падчас кампіляцыі: традыцыйная `` стоп-энд-копия''сборщик смецця і пакаленнямі зборшчык смецця які з'яўляецца больш эфектыўным і, такім чынам, памяншае час прымянення парушаецца смецця. На платформах з пашыранымі функцыямі кіравання памяццю, дадатковых рэжым можа быць уключаны для пакаленняў зборшчык смецця для далейшага скарачэння часу чакання.
Нестандартныя Асаблівасці схемы. У дадатак да стандартнай схеме асноўны, Элк падтрымлівае першага класа асяроддзяў, апрацоўка памылак, забяспечыць / патрабуе і аўтазагрузку, вадкасці прывязкі і дынамічныя ветру, проста `` EVAL-twice''стылі макрасы, спісы нерухомасці, радок партоў і двунаправленный парты, абалонкі стылі пашырэнне `` тильда''в імёнах файлаў, інтэрактыўныя верхняга ўзроўню напісаны на схеме, адладчык Схема і даволі друкаркі, адвольныя bitstrings даўжыні, і схема запісу.
Вычарпальная дакументацыя. Дыстрыбутыў уключае ў сябе 230 + старонкі цалкам праіндэксаваныя дакументацыі. Усе кіраўніцтва існаваць як TROFF ўваходных файлаў, якія могуць быць пераведзены ў HTML (выкарыстоўваючы unroff ) для онлайн-прагляду ў дадатак да вытворчасці набрана якасці друкаваных версій.
Распаўсюджваецца ў юрыдычна Нявыкарыстаны форме. Аўтарскія правы / ліцэнзійнае пагадненне дазваляе свабоднае распаўсюджванне і выкарыстанне Элк ў камерцыйных прадуктах.
Члены сям'і мове Lisp асабліва падыходзіць у якасці пашырэння моў: Lisp мае просты сінтаксіс, але магутны семантыкі, гэта дазваляе пры малых рэалізацыі, і яе інтэрактыўны характар ??падтрымлівае хуткае прототипирование і рэкамендуе карыстальнікам даследаваць і тэставаць вырашэння праблем у паслядоўныя .
Такім чынам, Lisp становіцца ўсё больш папулярным для гэтай мэты, у пункце, дзе багацце розных дыялектах ператварылася ў праблему. З стандартызаваных дыялектаў Lisp, толькі схема з'яўляецца адпаведным сціплых, але досыць агульны, у якасці шматразовай пашырэнне мовы для шырокага спектру ўжыванняў. Схема з'яўляецца артаганальных і выразна, і гэта досыць маленькі, каб не дамінаваць дадатак, яно служыць і ў поўнай меры разумелі з прымальнай намаганняў.