Gecko(소프트웨어)

Gecko (software)
도마뱀붙이
Mozillagecko-logo.svg
개발자Mozilla Foundation, Mozilla Corporation, Adobe Systems 및 기타 기부자
안정된 릴리스
78.0 / 2020년 6월, 2년 전(2020년 6월)
저장소
기입처C++, JavaScript, Rust
유형브라우저 엔진
면허증.MPL 2.0[1][2]
웹 사이트developer.mozilla.org/en-US/docs/Glossary/Gecko

Gecko는 Mozilla에 의해 개발된 브라우저 엔진이다.파이어폭스 브라우저, Thunderbird 이메일 클라이언트 및 기타 많은 프로젝트에서 사용됩니다.

Gecko는 개방형 인터넷 표준을 지원하도록 설계되었으며, 웹 페이지를 표시하기 위해 다른 응용 프로그램에 의해 사용되며, 경우에 따라서는 응용 프로그램의 사용자 인터페이스 자체(XUL 렌더링)에 사용됩니다.Gecko는 풍부한 프로그래밍 API를 제공하여 웹 브라우저, 콘텐츠 프레젠테이션, 클라이언트/[3]서버와 같은 인터넷 지원 애플리케이션의 다양한 역할에 적합합니다.

Gecko는 C++와 JavaScript로 [4][5]작성되었으며 2016년부터 Rust로 [6][7]추가 작성되었습니다. 소프트웨어는 Mozilla Public License 버전 [8]2의 조건을 따르는 무료 오픈 소스 소프트웨어입니다.Mozilla는 공식적으로 Android,[4] Linux, macOS[9]Windows에서의 사용을 지원합니다.

역사

현재 Gecko로 알려진 레이아웃 엔진의 개발은 회사가 DigitalStyle을 인수한 이후인 1997년에 Netscape에서 시작되었다.원래 Netscape Navigator 1.0용으로 작성되어 수년간 업그레이드된 기존 Netscape 렌더링 엔진은 느렸고 W3C 표준을 잘 준수하지 않았으며 동적 HTML을 제한적으로 지원했으며 증분 리플로우(새로운 데이터를 다운로드하여 에 추가할 때 레이아웃 엔진이 화면에 요소를 재배치하는 경우) 등의 기능이 부족했습니다.페이지)를 참조해 주세요.새로운 레이아웃 엔진은 오래된 레이아웃 엔진과 병행하여 개발되었으며, 성숙하고 안정되면 Netscape Communicator에 통합하려는 의도였다.적어도 1개의 Netscape 메이저리비전이 스위치 전에 오래된 레이아웃 엔진과 함께 출시될 것으로 예상되었습니다.

1998년 초 Mozilla 프로젝트가 시작된 후 새로운 레이아웃 엔진 코드가 오픈 소스 라이센스로 출시되었습니다.원래 랩터로 공개되었던 이름은 상표 문제로 인해 NGLayout(차세대 레이아웃)으로 변경해야 했습니다.Netscape는 나중에 NGLayout을 Gecko로 재브랜드화했다.Mozilla Organization(Mozilla Foundation의 전신)은 처음에는 NGLayout(Gecko는 Netscape 상표)[10]이라는 이름을 계속 사용했지만, 결국 Gecko 브랜딩이 승리했다.

1998년 10월 Netscape는 다음 브라우저가 이전 레이아웃 엔진 대신 Gecko(당시 여전히 NGLayout으로 불렸던 것)를 사용할 것이라고 발표하였고, 애플리케이션의 많은 부분을 다시 작성해야 했다.이 결정은 웹 표준 지지자들에게 인기가 있었지만,[11] 개서를 위해 주어진 6개월에 불만을 품은 Netscape 개발자들에게는 인기가 없었다.이것은 또한 Netscape Communicator 5.0을 위해 수행된 대부분의 작업(구 레이아웃 엔진에 대한 Mariner에 대한 개발 포함)을 포기해야 한다는 것을 의미했다.Netscape 6는 Gecko를 통합한 최초의 Netscape 릴리스로 2000년 11월에 출시되었습니다(Netscape 5라는 이름은 사용되지 않았습니다).

Gecko의 개발이 계속됨에 따라, 다른 애플리케이션과 임베더들이 그것을 사용하기 시작했습니다.America Online은 이 무렵 Netscape의 모회사인 CompuServe 7.0과 Mac OS X용 AOL에서 사용하기 위해 채택했다(이 제품들은 이전에 인터넷 익스플로러를 내장하고 있었다).그러나 몇 가지 베타 버전을 제외하고 Gecko는 Microsoft Windows AOL 메인 클라이언트에서 사용되지 않았습니다.

2003년 7월 15일, AOL은 나머지 도마뱀붙이 개발자들을 해고하고 모질라 재단(같은 날 설립)이 도마뱀붙이 개발의 주요 관리인이 되었다.현재 Gecko는 Mozilla Corporation 직원, Mozilla 프로젝트에 참여한 회사 직원 및 자원봉사자에 의해 개발되고 있습니다.

2016년 10월, Mozilla는 "Firefox 사용자를 위한 차세대 웹 엔진 구축"을 위한 여러 소프트웨어 개발 노력을 포함하는 진행 중인 프로젝트인 Quantum을 발표했습니다.실험용 서보 [12][13]프로젝트에서 가져온 Gecko에 대한 수많은 개선 사항이 포함되어 있습니다.Firefox 57은 "Firefox Quantum"이라고도 하며 2017년 11월에 처음 출하되며 Quantum/Servo 프로젝트의 주요 구성 요소가 활성화된 초기 버전입니다.여기에는 CSS GPU 렌더링 컴포넌트의 퍼포먼스 향상이 포함됩니다.향후 [12]버전에서는 추가 컴포넌트가 서보에서 Gecko로 단계적으로 통합될 예정입니다.

2018년 9월, Mozilla는 Gako를 Android에 재사용할 수 있게 하는 소프트웨어 라이브러리를 기반으로 한 Mozilla의 차세대 모바일 제품의 기반인 GakoView를 발표했습니다. 여기에는 "엔진 자체를 사용자 인터페이스에서 분리하여 다른 응용 프로그램에 쉽게 포함시키기 위한 새로운 소프트웨어 개발 노력이 포함됩니다."같은 [14]달에 출하된 Firefox Focus 7.0은 GeckoView의 초기 버전으로 중앙 페이지 [15][16]로딩 성능이 향상되었습니다.파이어폭스 리얼리티는 또한 GeckoView로 [15]구축되었다.2019년 6월, 모질라는 파이어폭스 프리뷰를 [17]GeckoView로 안드로이드 웹 브라우저를 구축하는 데 초점을 맞춘 진행 중인 프로젝트로 발표했다.파이어폭스 for Android 79(Firefox Daylight라고도 함)는 2020년 8월에 처음 출하되었으며, GeckoView [18]엔진에 의해 구동되는 주요 컴포넌트를 갖춘 최초의 안정적인 릴리스입니다.

표준 지원

처음부터 Gecko는 개방형 인터넷 표준을 지원하도록 설계되었습니다.Gecko가 지원하는 표준에는 다음이 포함됩니다.

Gecko는 SVG 1.[21]1도 부분적으로 지원한다.SVG 폰트, 컬러 프로파일, 애니메이션, 뷰 및 커서 모듈은 아직 구현되지 않았으며 필터와 텍스트 모듈은 부분적으로만 구현되어 있습니다.확장성 모듈도 구현되어 있지만 현재 비활성화되어 있습니다.

Netscape 및 Internet Explorer의 기존 버전을 위해 설계된 웹 페이지를 지원하기 위해 Gecko는 DOSCTYPE 전환을 지원합니다.최신 DOSCTYPE를 사용하는 문서는 W3C 표준을 엄격하게 준수하는 표준 준수 모드로 렌더링됩니다.DOSCTYPE 또는 이전 DOSCTYPE가 없는 문서는 Netscape Communicator 4.x의 일부 비표준적인 특이점을 에뮬레이트하는 퀴크 모드로 렌더링되지만, 4.x 기능 중 일부(: 계층)는 지원되지 않습니다.

또한 Gecko는 marquee 요소 및 marquee 요소와 같은 일부 비표준 Internet Explorer 기능을 제한적으로 지원합니다.document.all속성(단, 명시적으로 테스트하는 페이지)document.all지원되지 [22]않는다는 메시지가 표시됩니다).

사용법

Gecko는 주로 웹 브라우저에서 사용되며, 가장 오래된 것은 Netscape 6와 Mozilla Suite(나중에 SeaMonkey로 개명)이다.또한 모바일용 FirefoxFirefox와 같은 다른 Mozilla 웹 브라우저 파생 제품과 Wine의 [23]일부인 Internet Explorer-Clone 구현에도 사용됩니다.Mozilla는 또한 Thunderbird 이메일 클라이언트에서도 이를 사용합니다.

Gecko를 사용하는 다른 웹 브라우저에는 GNU IceCat,[24] Waterfox, K-Meleon, Lunascape, Portable Firefox, Conkeror, Classilla, TenFourFox 등이 있습니다.

Gecko는 또한 Sugar에 의해 OLPC XO-1 [25]컴퓨터에 사용됩니다.Gecko는 XUL(XML 사용자 인터페이스 언어)의 완전한 구현으로 사용됩니다.Gecko는 현재 XUL 사양을 정의합니다.

과거 사용자

이전에 Gecko를 사용하던 제품으로는 Pale Moon(현재는 Goanna를 사용), Epiphany(현재는 GNOME Web으로 알려져 있으며 WebKitGTK를 사용), GNOME DevHelp(현재는 WebKitGTK를 사용)가 있습니다.

단종된 제품은 스위프트폭스, 플록, 갈레온, 카미노, 미니모, 베넥스커뮤니케이터, 카제하카제, 송버드, 선버드(캘린더), 마이크로비, 나이팅게일, 인스턴트버드,[26] 리눅스용 피카사 등이다.

독점적 의존성

Windows 및 기타 플랫폼에서 Gecko는 독점 [27]컴파일러에 의존합니다.따라서 Linux의 FOSS 배포판에는 Windows 호환성 계층인 [28]와인에 사용되는 Gecko 패키지가 포함될 수 없습니다.

Gecko 2.0 이후 버전 번호를 5.0으로 변경하여 Firefox [29]5와 일치시켰으며, 이후 Firefox와 Thunderbird의 메이저 버전 번호와 동기화하여 더 이상 별도의 [30]구성요소가 아님을 반영하고 있습니다.

블로트

Netscape 시대에는 기술적 판단과 관리적 판단의 부실이 Gecko 소프트웨어의 [11][31][32]번식을 초래했습니다.따라서 2001년 애플은 사파리 [31][32]브라우저용 WebKit 엔진을 만들기 위해 Gecko가 아닌 KHTML을 포크하기로 결정했다.그러나 2008년까지 Mozilla는 일부 비대해진 문제를 해결하였고,[33] 결과적으로 Gecko의 성능이 크게 향상되었습니다.

양자

Quantum은 "Firefox 사용자를 위한 차세대 웹 엔진 구축"을 위한 여러 소프트웨어 개발 노력을 포함하는 Mozilla 프로젝트입니다.실험용 서보 프로젝트에서 주로 통합한 Gecko의 수많은 개선 사항이 포함되어 있습니다.Quantum에는 사용자 인터페이스 및 상호 [12][13]작용에 대한 개선 사항도 포함되어 있습니다.

2017년 11월에 출시된 파이어폭스 57은 서보 구성 요소가 활성화된 초기 버전입니다.Mozilla는 이 릴리스와 향후 출시 예정인 몇 가지 릴리스를 "Firefox Quantum"[34][35]이라고 부릅니다.

배경

2012년 Mozilla는 메모리 안전상의 취약점을 줄이면서 동시성과 병렬성을 개선하는 것을 목표로 처음부터 설계된 엔진인 실험용 서보 프로젝트를 시작했습니다.서보는 또한 Mozilla에 의해 만들어진 Rust 프로그래밍 언어로 작성됩니다.이것은 컴파일된 C++ [5]코드보다 메모리 안전성, 동시성 및 병렬성이 뛰어난 컴파일된 코드를 생성하도록 설계되어 있습니다.

2016년 4월 현재, 서보는 완전한 기능을 갖춘 브라우저 [36]엔진이 되기 위해 최소 몇 년의 개발이 필요했고, 따라서 파이어폭스에 서보의 안정적인 부분을 도입하기 위한 Quantum 프로젝트를 시작하기로 결정했습니다.모질라는 2020년 [37]8월에 모든 서보 개발자들을 해고했다.

구성 요소들

Quantum 프로젝트는 여러 하위 [12]프로젝트로 구성됩니다.

  • CSS: Gecko에 통합된 서보의 병렬 스타일 시트 시스템.벤치마크에 따르면 성능은 CPU [38]코어 수에 따라 선형적으로 확장됩니다.이것은 파이어폭스 [35]57에서 공개되었습니다.
  • 렌더링: WebRender라고 불리는 서보의 렌더링 아키텍처는 Gecko에 통합되어 있습니다.WebRender는 씬 그래프와 CSS/DOM의 유사성을 이용하여 즉시 모드 그리기 모델을 GPU에 의해 보다 쉽게 가속되는 유지 모드 모델로 대체합니다.테스트에서 최악의 시나리오 렌더링이 [39]초당 60프레임을 초과합니다.Mozilla는 Firefox [40]67에서 일부 하드웨어/OS 조합에 대해 새로운 렌더러를 활성화하기 시작했습니다.
  • 컴포지터:Gecko의 기존 컴포지터는 자체 프로세스로 이행하여 브라우저 탭이 그래픽 드라이버 관련 크래시로부터 격리되었습니다.컴포지터 크래시가 브라우저 콘텐츠프로세스를 정지시키지 않기 때문에 컴포지터 프로세스는 사용자 데이터를 잃지 않고 투과적으로 재시작할 수 있습니다.이것은 파이어폭스 [41]53에서 공개되었습니다.
  • DOM: 서보의 Constellation 아키텍처[42] Opera의 Presto [43]엔진에서 느슨하게 영감을 얻은 Quantum DOM은 DOM 에서 공동 스케줄된 스레드를 사용하여 프로세스 수를 늘리지 않고 응답성을 향상시키고 메모리 사용량을 증가시킵니다.이것의 핵심은 Firefox [44]57에 포함되어 있습니다.
  • Flow: Gecko 컴포넌트 전체에서 작업하는 팀이 추진하는 사용자의 가시적인 성능 향상을 위한 우산입니다.주로 G Suite(Google Workspace) [45]Facebook 등 주요 웹 의 실제 사용자 성능 향상에 초점을 맞춥니다.이 작업은 완료되어 Firefox [46]57용으로 출고되었습니다.
  • Photon: UI 퍼포먼스 향상에 중점을 둔 어플리케이션 전체의 UI 리프레시.Quantum [47]Flow의 자매 프로젝트로 취급됩니다.이것은 파이어폭스 [34]57에서 공개되었습니다.
  • 네트워크:메인 스레드에서 더 많은 네트워크 액티비티를 이동시키고 네트워킹 스트림의 컨텍스트에 따른 우선순위를 부여하며 [48]캐시 레이어를 네트워크와 경쟁시킴으로써 Gecko의 네트워킹 레이어인 Necko의 성능을 향상시킵니다.이 기능은 Firefox [49]59에서 출시되었습니다.

아즈레

Mozilla Azure 프로젝트[50]Firefox에서 사용되는 상태 비저장 저수준 그래픽 추상화 API입니다.이 프로젝트에는 보다 정확한 Direct2D 호환성, 최적화된 상태 상호 운용성, 성능 특성 및 버그에 대한 향상된 제어 등 몇 가지 목표가 있습니다.Azure는 3D 그래픽 백엔드에 더해 2D 하드웨어 액셀러레이션을 제공합니다.파이어폭스는 2012년부터 [51][52]카이로 대신 애저(Azure)를 사용하기 시작했다.C++로 작성되어 있으며,[53] 서보에서 사용됩니다.Azure라는 이름은 Netscape의 초기 설립자 James H. Clark와 실리콘 그래픽스에서 작업한 초기 작품의 노래로, 워크스테이션의 이름은 종종 [54]색에서 따왔다.

레퍼런스

  1. ^ "Mozilla Foundation End-User Licensing Agreements". Mozilla.
  2. ^ "Mozilla Licensing Policies". mozilla.org. Retrieved 2013-03-26.
  3. ^ "Embedding Mozilla". Mozilla.org. 2012-10-25. Retrieved 2012-10-31.
  4. ^ a b "Simple Firefox for Android build". Archived from the original on 2019-09-29. Retrieved 2017-05-03. Gecko is implemented using C++ and JavaScript.
  5. ^ a b Bergstrom, Lars; et al. (May 2016). "Engineering the Servo Web Browser Engine using Rust" (PDF). Proceedings of the International Conference on Software Engineering.
  6. ^ "Google Groups". groups.google.com.
  7. ^ Yegulalp, Serdar (February 3, 2017). "Mozilla binds Firefox's fate to the Rust language". InfoWorld.
  8. ^ "MPL 2 Upgrade". Retrieved 2012-08-18.
  9. ^ "Gecko FAQ". MDN Web Docs. Archived from the original on 2019-10-08. Retrieved 2017-05-03.
  10. ^ "nglayout project: identity crisis". Mozilla.org. Archived from the original on 2011-06-29. Retrieved 2012-10-31.
  11. ^ a b Jorge O. Castro (2004-06-15). "Ars Technica sits down with Scott Collins from Mozilla.org". Ars Technica. Retrieved 2017-02-16.
  12. ^ a b c d "Quantum". Mozilla Wiki. Retrieved 2017-04-20.
  13. ^ a b Cimpanu, Catalin. "Mozilla Announces Quantum, a New Browser Engine for Firefox". softpedia. Retrieved 2016-11-07.
  14. ^ "Firefox Focus 7.0 enters beta, Switches to GeckoView (Gecko Engine)". 14 September 2018.
  15. ^ a b "Firefox Focus with GeckoView". Mozilla Hacks. September 13, 2018. Retrieved September 4, 2019.
  16. ^ "What's new in Firefox Focus for Android (version 7) Firefox Focus Help". support.mozilla.org. Retrieved September 4, 2019.
  17. ^ "GeckoView in 2019". Mozilla Hacks. June 27, 2019. Retrieved September 4, 2019.
  18. ^ Vesta Zare (August 25, 2020). "Fast, personalized and private by design on all platforms: introducing a new Firefox for Android experience". Mozilla Blog. Retrieved September 22, 2020.
  19. ^ "Mozilla CSS support chart". Developer.mozilla.org. 2012-08-04. Archived from the original on 2014-04-05. Retrieved 2012-10-31.
  20. ^ "ECMAScript 5 support in Mozilla". Developer.mozilla.org. 2013-11-14. Retrieved 2013-12-02.
  21. ^ "Mozilla SVG Status". Mozilla.org. 2012-08-25. Retrieved 2012-10-31.
  22. ^ "Mozilla Adds Undetectable document.all Support, Part of New Novell Linux Distribution?". Developer.mozilla.org. 2004-07-23. Retrieved 2018-02-07.
  23. ^ "IE Uses Gecko Under Wine". Wine Wiki. Retrieved 2009-09-14.
  24. ^ sdubois (24 June 2010). "Gecko". Free Software Foundation. Retrieved 23 May 2019.
  25. ^ Martens, China (2007-01-03). "One Laptop Per Child readies 'Sugar' interface". IDG News Service. Archived from the original on 2008-01-18. Retrieved 2007-12-28.
  26. ^ "Picasa 3.0 for Linux". Archived from the original on 2009-01-07. Retrieved 2008-12-28.
  27. ^ "Building Firefox for Windows". MDN Web Docs.{{cite web}}: CS1 maint :url-status (링크)
  28. ^ wiki.jswindle.com https://web.archive.org/web/20120611003752/http://wiki.jswindle.com/index.php/Fedora#Working_Wine. Archived from the original on June 11, 2012. {{cite web}}:누락 또는 비어 있음 title=(도움말)
  29. ^ "Gecko versions and application versions". MDN. Retrieved 2013-11-18.
  30. ^ "Not much in new Thunderbird 5, but roadmap looks promising". Ars Technica. 30 June 2011. Retrieved 2018-02-07.
  31. ^ a b Paul Festa (2003-01-14). "Apple snub stings Mozilla". CNET Networks. Archived from the original on 2012-10-25. Retrieved 2017-02-16.
  32. ^ a b David Baron (2003-01-09). "Thursday 2003-01-09". David Baron's weblog. self-published. Archived from the original on 2009-07-28. Retrieved 2017-02-16.
  33. ^ Ryan Paul (2008-09-09). "Why Mozilla is committed to Gecko as WebKit popularity grows". Retrieved 2017-02-16.
  34. ^ a b "Firefox 57.0, See All New Features, Updates and Fixes". Mozilla. Retrieved 2018-10-30.
  35. ^ a b "Introducing the New Firefox: Firefox Quantum – The Mozilla Blog". The Mozilla Blog. Retrieved 2018-10-30.
  36. ^ "Servo remaining work". GitHub. Retrieved 2017-02-17.
  37. ^ "Mozilla lays off 250 employees while it refocuses on commercial products". ZDNet. Retrieved 2022-06-14.
  38. ^ "The Changelog". The Changelog. Retrieved 2017-03-28.
  39. ^ "Bay Area Rust Meetup February 2016". Air Mozilla. Retrieved 2017-03-28.
  40. ^ "Webrender Where". Mozilla Wiki. Retrieved 2020-07-14.
  41. ^ "Firefox faster and more stable with the first big bytes of Project Quantum, simpler with compact themes and permissions redesign". Mozilla Blog. Retrieved 2017-04-27.
  42. ^ "Servo Architecture". YouTube. Archived from the original on 2021-12-11. Retrieved 2017-03-28.
  43. ^ "Mozilla's Quantum Project". Bill McCloskey's Blog. 2016-10-27. Retrieved 2017-03-28.
  44. ^ "Entering the Quantum Era". Mozilla Hacks. 2017-11-13. Retrieved 2020-07-14.
  45. ^ "Quantum Flow". Mozilla Wiki. Retrieved 2017-03-28.
  46. ^ "Quantum Flow Engineering Newsletter #25". ehsanakhgari.org. 2017-09-17. Retrieved 2020-07-14.
  47. ^ dolske (2017-05-18). "Photon Engineering Newsletter #1". Dolske's blog. Retrieved 2017-07-04.
  48. ^ "TPE Necko/Projects - MozillaWiki". wiki.mozilla.org. Retrieved 2017-07-04.
  49. ^ "Firefox 59 Release Notes". www.mozilla.org. Retrieved 2019-01-16.
  50. ^ "Platform/GFX/Moz2D - MozillaWiki".
  51. ^ Parfeni, Lucian. "Firefox Now Uses the Azure Graphics API for Canvas on All Platforms".
  52. ^ "Azure Replacing Cairo In Mozilla Firefox - Phoronix".
  53. ^ Willis, Nathan (17 June 2015). "Parallel page rendering with Mozilla Servo". LWN.net. Retrieved 27 June 2015.
  54. ^ "Introducing the Azure project - JOEDREW!". Archived from the original on 2016-09-08. Retrieved 2019-09-22.

외부 링크