Rev. 2.73


Prototype의 새 버전인 1.6.1 RC2(출시 후보)가 정식으로 공개되었습니다. 지난주 IE8의 출시로인하여 이에 대응하기 위해 임시로 릴리즈 한 것이라고 하네요. IE8 표준(Strict) 모드에서 지원되는 DOM 선택자 API와 DOM 엘리먼트 확장을 사용할 수 있게 됐답니다. 새로운 기능인 Element.Storage가 추가 되었습니다. 이것은 DOM Element에 메타 데이터를 저장하고 안전하게 보관 및 호출할 수있게 합니다. 이 기능은 jQuery와, Mootools에서 지원되고 있는 것과 동일한 것입니다. "mouseover", "mouseout" 이벤트 보다 더욱 똑똑한 "mouseenter", "mouseleave" 이벤트를 사용할 수 있으며, Element#clone 메서드의 처리방법이 변경되었습니다.

이 밖에 이벤트 핸들러로 인한 메모리릭(누수) 현상 방지, Function#bind, Element#down 메서드의 성능 향상 그리고 다수의 버그가 수정 되었다고 합니다. 며칠전에 Prototype 개발팀의 리파지토리에서 직접 빌드해서 써오고 있던 것과 완전히 동일하더군요. IE8에서 안정적으로 작동하는 것을 직접 확인하였습니다.


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.