Rev. 2.73

Canvas 엘리먼트를 지원하지 않는 IE계열 브라우저에서 Canvas 엘리먼트를 사용할 수 있게 하는 ExplorerCanvas 라이브러리가 IE8을 추가로 지원하기 위하여 업데이트 되었습니다. 종전의 ExplorerCanvas 라이브러리는 VML 엘리먼트를 사용하여 구동된 반면, IE8에서는 SVG 엘리먼트로 대체되어 실버라잇 브릿지를 이용해야 했었습니다. 적용해 보니 그럭저럭 쓸만하네요. 처리 속도가 향상되긴 했는데, 실버라잇 브릿지만 못합니다. 아래는 리비전 48의 자세한 변동 내역입니다.

  • Implement transform and setTransform. This passes all the tests in the HTML5 canvas tests for 2d.transformation.*
  • Remove fallback content that caused some issues when resizing the canvas element.
  • Fix issue where strokeRect, fillRect and clearRect incorrectly cleared the current path.
  • Added 2 new tests and modified an existing test to ensure that the new code works as expected and tested this in all modern browsers
  • Fix for IE8. This involved passing one more argument to namespaces.add as well as ensuring all CSS lengths have units (px). Passes all the test cases in all modes in IE8.
  • Fixes for linear gradients.
  • Added two test cases for linear gradients.
  • Changed the calculation method of line width. An averaged line width is calculated from the determinant of matrix, which is valid even when transform() method is implemented someday.
  • Improved the rendering of lines. Lines with the width less than 1px look better now.
  • Fixed the bug that stroke() ignored lineCap, lineJoin and miterLimit when fillStyle attribute was set.
  • Removed the settings of strokeweight, strokecolor and fillcolor. They are unnecessary since they are overridden by the weight and color attributes in <v:stroke> and <v:fill>.
  • This fixes issues where translate, rotate and scale is used during a path is being constructed. Previously we did the coord translations just before we draw the path. That is incorrect and now we do the translations when we add each individual piece to the path
  • Added very limited support for scaling of the stroke width. Currently we do the scaling by calculating the position in the final coordinate space and we therefore cannot do non uniform scaling of the stroke. For now we just do the max x/y scale factor.
  • Fix stroke. It should not close the path
  • Fix memory leaks
  • Fix issue where the path was not closed when strokeRect/fillRect was called.
  • Use the document.createElement('canvas') hack that was exposed by Sjoerd Visscher last week. This allows us to remove fixElement_ completely.
  • Added globalAlpha to the list of attributes copied for save/restore, as per the canvas specification.


IE8에 대응하는 Prototype 소식이 궁금해서 리파지토리의 CHANGELOG를 살펴보니 숨가쁘게 커밋이 이루어 지고 있더군요. IE8과 관련한 DOM 컨트롤들이 빠른속도로 갱신되고 있었습니다. 다음에 릴리즈 될 버전을 조금이라도 빨리 만나보고 싶다면 직접 Prototype의 소스 리파지토리로 접근하여 가장 최근에 작업된 소스코드를 다운로드하고 빌드하여 사용하면 됩니다. 그 과정은 아래와 같습니다.

1. Git 버전 관리 도구를 다운로드하고 설치한다. 윈도용은 msysGit이다. (사용법)
2. Ruby의 Rake 라이브러리를 설치한다. 윈도 사용자는 One-Click Ruby Installer를 설치한다.
3. 바탕화면에 "Git Bash"를 실행하고 아래처럼 입력하여 github.com로부터 소스를 내려받는다.

$ git clone git://

4. 다운로드가 완료되면 다음의 두 명령을 사용하여 프로젝트를 초기화하고 업데이트 한다.

$ git submodule init
$ git submodule update

5. 시작 > 실행 창에 "cmd"를 입력하고 아래의 명령으로 받은 소스가 유효한지 테스트한다.

C:\Users\firejune\Workspace\prototype>rake test BROWSERS=firefox,ie

6. 테스트 결과를 확인한 후 이상이 없으면 커멘드창에 아래의 명령으로 빌드한다.

C:\Users\firejune\Workspace\prototype>rake dist

7. 빌드된 "prototype.js" 파일은 "prototype\dist"폴더에서 발견할 수 있다.

위 과정에서 끝내주는 테스트 자동화 환경(유닛 테스트)을 경험할 수 있습니다. 참고로, Prototype은 Git VCS(버전 컨트롤 시스템)를 도입하여 개발되고 있어 원한다면 Prototype 개발에 직접 참여할 수도 있네요. 소스를 보니, 내부적으로 사용하는 문법이 많이 바뀌었습니다. 저만 그런지 몰라도 jQuery의 문법(싱글톤)이 연상되네요.