2024년을 되돌아보고 내년을 미리 예측해 보세요.
2024년은 stdlib의 획기적인 해로 발전과 혁신, 커뮤니티 성장이 돋보였습니다. 돌이켜보면, stdlib 커뮤니티 구성원들이 기존 API를 개선하고, 새로운 기능을 개발하고, 앞으로의 흥미로운 길을 위한 토대를 마련하는 데 들인 시간과 노력의 양에 놀랐습니다. 웹에서 과학 컴퓨팅의 미래를 적극적으로 형성하고 있는 커뮤니티의 일원이 된 것을 정말 행운으로 생각하며 앞으로도 우리의 지속적인 성공을 낙관합니다.
이 게시물에서는 몇 가지 주요 하이라이트를 요약하고 2025년에 어떤 일이 일어날지 예고하겠습니다. 개별 기여자에게 다양한 인사를 하겠지만, 올해 우리가 성취한 것 중 어느 것도 전체 노력 없이는 일어날 수 없었을 것입니다. stdlib 커뮤니티. 커뮤니티는 버그 찾기 및 패치부터 끌어오기 요청 검토 및 문제 분류, 수치 알고리즘 및 소프트웨어 설계의 잡초에 대한 심층 분석에 이르기까지 stdlib를 성공시키는 데 필요한 노력을 수행하는 데 중요한 역할을 했습니다. 제가 당신의 이름을 언급하지 않더라도, 당신의 노력이 인정받고 크게 감사하고 있다는 점을 꼭 알아두시기 바랍니다. 관련된 모든 분들과 그 과정에서 크고 작은 도움을 주신 모든 분들께 큰 감사를 드립니다. ❤️
지난해는 상당한 성장, 혁신, 커뮤니티 기여로 stdlib에 변화를 가져왔습니다. 주요 내용은 다음과 같습니다.
stdlib의 급속한 성장과 글로벌 커뮤니티의 공동 노력을 통해 우리는 웹에서 과학 컴퓨팅의 미래를 만들어가고 있습니다. 이 흥미진진한 여정의 다음 단계를 밟아가는 데 동참해 주세요!
시작하기 전에 몇 가지 높은 수준의 연말 통계를 살펴보겠습니다. 올해는
이러한 성과는 우리 커뮤니티의 노고와 헌신을 반영합니다. 바쁜 한 해였으며, 우리는 프로젝트와 커뮤니티가 지속적으로 성장함에 따라 어떻게 효과적으로 프로젝트를 확장할 수 있는지 비판적으로 생각해야 했습니다. 이는 도구 및 자동화에 투자하고, 검토 및 릴리스 프로세스를 개선하고, 새로운 기여자를 신속하게 식별하고 기술을 향상시킬 수 있는 방법을 찾는 것을 의미했습니다.
2024년 stdlib에 큰 변화를 가져온 이벤트 중 하나는 Google Summer of Code(GSoC) 참가였습니다. 이전에는 2023년에 지원했지만 거절되었습니다. 그래서 2024년에 지원했을 때는 기회가 별로 없을 거라고 생각했어요. 놀랍게도 stdlib가 승인되었고, 앞으로 유입되는 기여자를 처리할 수 있도록 업무를 정리하기 위해 미친 듯이 돌진했습니다.
GSoC는 재능 있는 기여자를 영입하고 중요한 프로젝트를 추진하면서 stdlib에 혁신적인 경험을 선사했습니다. GSoC 반영에서 자세히 설명했듯이 길이 험난했지만 많은 것을 배웠고 반대편으로 나왔습니다. 말할 필요도 없이 Aman Bhansali, Gunj Joshi, Jaysukh Makvana 및 Snehil Shah 등 정말 훌륭한 GSoC 기여자 4명을 갖게 된 것은 정말 행운이었습니다. 아래 섹션에서 이들의 작업에 대해 좀 더 설명하겠습니다.
Node.js REPL(읽기-평가-인쇄 루프)은 JavaScript 세계에서 활용도가 낮고 평가도 과소평가되는 경우가 많습니다. stdlib 초창기부터 우리는 stdlib의 과학적 컴퓨팅 및 데이터 처리 기능에 대한 통합 지원을 통해 더 나은 REPL 환경을 만들고 싶었습니다. stdlib REPL 개발은 순조롭게 진행되었지만 JavaScript에서 대화형 탐색 데이터 분석을 용이하게 하기 위해 Python IPython의 성능과 기능 세트를 일치시키려는 목표는 항상 있었습니다. 따라서 Snehil Shah가 GSoC의 일부로 stdlib REPL 작업에 관심을 표명했을 때 우리는 매우 기뻤습니다.
Snehil은 이미 "Welcoming colors to the REPL!"에 대한 이전 블로그 게시물에서 자신의 작업 중 일부를 다루었지만 그와 다른 사람들의 작업은 훨씬 더 많은 것을 다루었습니다. 몇 가지 주요 내용:
대부분 Snehil의 작업 덕분에 우리는 2024년에 IPython 패리티에 훨씬 더 가까워졌고 이를 통해 과학 컴퓨팅을 위한 JavaScript 경험을 변화시켰습니다. 아직 끝나지 않았습니다. 우리는 여전히 대기열을 통해 작업하는 풀 요청을 가지고 있으며, 특히 흥미로운 점 중 하나는 최근 Jupyter 프로토콜에 대한 지원 추가를 탐색하기 시작했다는 것입니다. 2025년에도 추가 REPL 소식을 기대해주세요!
또 다른 초점 영역은 stdlib의 BLAS(Basic Linear Algebra S서브 프로그램) 지원의 지속적인 개발입니다. , 벡터 덧셈, 스칼라 곱셈, 점 등 일반적인 선형 대수 연산을 위한 기본 API를 제공합니다. 제품, 선형 조합 및 행렬 곱셈. 2024년에 들어서면서 stdlib의 BLAS 지원은 특히 복소수 부동 소수점 데이터 유형에 대한 지원 측면에서 다소 불완전했습니다. 내장된 JavaScript 유형 배열을 사용하여 stdlib의 Complex64Array 및 Complex128Array 데이터 구조의 기능 패리티를 달성하려는 Jaysukh Makvana의 노력으로 흐름이 바뀌기 시작했습니다.
이러한 노력은 이후 복소수 유형의 배열 데이터 유형에 대한 레벨 1 BLAS 지원을 추가하고 stdlib에서 추가 레벨 2 및 레벨 3 BLAS 지원을 시작한 Aman Bhansali의 작업을 위한 길을 열었습니다. 처음에는 하위 수준 BLAS 스트라이드 배열 인터페이스에 초점을 맞춘 후 Aman은 WebAssembly 구현을 추가하고 상위 수준 다차원 배열(즉, ndarray) API를 통해 행렬 및 벡터 스택에 BLAS 작업을 적용하기 위한 지원을 추가하여 범위를 확장했습니다. 🎜>
기존 BLAS 루틴 외에도 stdlib에는 참조 BLAS의 일부가 아닌 BLAS와 유사한 루틴이 포함되어 있습니다. 이러한 루틴에는 대체 스칼라 및 누적 합계 알고리즘을 위한 API, 스트라이드 배열 정렬, 스트라이드 배열 요소 채우기 및 조작, NaN 값의 명시적 처리, 선형 대수학의 범주에 딱 들어맞지는 않지만 작업할 때 일반적으로 사용되는 기타 작업이 포함됩니다. 데이터로.Aman의 BLAS 작업 중에 우리는 BLAS 구현을 정리하고 리팩터링했으며 Muhammad Haris는 이러한 노력을 확장된 BLAS 루틴으로 확장하기 위해 자원했습니다. 그의 노력에는 상용구를 줄이고 기본 추가 기능 작성을 위한 광범위한 C 매크로 컬렉션을 활용하기 위해 Node.js 기본 추가 기능을 순수 C로 마이그레이션하는 작업이 포함되었으며 더 나아가 stdlib의 ndarray와의 인터페이스를 용이하게 하기 위해 전용 C API를 추가하는 작업도 수반되었습니다.
이러한 개발을 통해 stdlib는 수치 계산을 위한 강력한 도구를 제공하면서 JavaScript 개발자를 위한 선형 대수 지원 분야를 계속 선도할 수 있게 되었습니다. 많은 것이 완료되었지만 더 많은 작업이 남아 있으며 BLAS는 2025년에도 계속해서 초점이 될 것입니다.
Quansight Labs 인턴십의 일환으로 BLAS 작업을 기반으로 Pranav Goswami는 LAPACK(Linear Algebra Pack)의 기반을 마련하는 데 일했습니다. age) 선형 방정식 시스템을 풀기 위한 고차 선형 대수 루틴을 제공하기 위해 stdlib에서 지원 고유값 문제, 행렬 분해, 특이값 분해. 인턴십 후 블로그 게시물에서 더 자세히 설명된 Pranav는 추가된 구현의 테스트 및 문서화를 위한 접근 방식을 확립하고 BLIS의 아이디어를 활용하여 stdlib의 ndarray와의 인터페이스를 용이하게 하여 데이터 이동 및 스토리지 요구 사항을 최소화하는 LAPACK 인터페이스를 만들려고 노력했습니다. 문제를 해결하고 API 설계를 반복하는 데 상당한 시간이 소요되는 동안 Pranav는 다양한 구현 유틸리티와 일반적으로 사용되는 약 30개의 LAPACK 루틴을 추가하는 데 상당한 진전을 이루었습니다. LAPACK의 엄청난 양(~1700개 루틴)을 고려하여 이 작업은 가까운 미래에도 계속될 예정이므로 앞으로 몇 달 동안 더 많은 업데이트를 기대해 주세요!
잠깐만, stdlib가 Fortran 라이브러리와 인터페이스하는 방법(여전히 현대 수치 컴퓨팅의 기반을 형성하고 있음)에 대해 자세히 알아보고 싶다면 다음에서 Fortran 루틴 호출에 대한 Pranav의 블로그 게시물을 확인하세요. Node.js를 사용하는 JavaScript.
stdlib의 오랜 우선순위 중 하나는 일반적인 수학 및 통계 연산을 위한 벡터화된 루틴을 지속적으로 개발하는 것입니다. 모든 스칼라 수학적 커널(예: sin, cos, erf, 감마 등과 같은 초월 함수 및 통계적 분포 밀도 함수)에는 JavaScript 구현이 있지만 많은 커널에는 해당 C 구현이 부족했습니다. 네이티브 바인딩을 지원하는 Node.js 및 기타 서버측 JavaScript 런타임.
Gunj Joshi와 다른 사람들은 이 격차를 메우기 위해 160개 이상의 풀 요청을 열었고 전용 C 구현을 추가했습니다. 이 시점에서는 가장 많이 사용되는 배정밀도 초월 함수 중 소수만이 남아 있습니다(베타인을 보세요!). 이제 단정밀도 지원을 완료하고 통계 분포 기능을 위한 C 구현을 추가하는 데 노력이 집중되었습니다. 우리는 WebAssembly 및 Node.js 네이티브 추가 기능을 모두 구현하여 더 높은 수준의 Strided Array 및 ndarray API에 관심을 돌리기 전까지 이 작업이 2025년 상반기 동안 계속될 것으로 예상합니다.
우리가 크게 진전한 또 다른 영역은 슬라이싱 및 배열 조작 인체공학적 측면을 개선하는 것입니다. MATLAB 및 Julia와 같은 수치 프로그래밍 언어와 NumPy와 같은 전용 수치 컴퓨팅 라이브러리 사용자는 오랫동안 배열 요소의 하위 집합에만 영향을 미치는 연산을 표현하기 위한 간결한 구문의 이점을 누려왔습니다. 예를 들어, 다음 스니펫은 NumPy를 사용하여 배열의 다른 모든 요소를 0으로 설정하는 방법을 보여줍니다.
import numpy as np # Create an array of ones: x = np.ones(10) # Set every other element to zero: x[::2] = 0.0
언어로서 JavaScript는 편리한 구문을 제공하지 않으므로 사용자는 더 자세한 객체 방법이나 수동 for 루프를 사용해야 합니다. 따라서 우리는 "멋진 인덱싱"을 지원하기 위해 프록시 개체를 활용하여 이러한 격차를 해결하려고 했습니다. 프록시 객체를 사용하면 속성 간접 참조로 인해 일부 성능 오버헤드가 발생하지만 이제 단일 패키지만 설치하고 가져오기만 하면 JavaScript에서 Python 스타일 슬라이싱의 모든 이점을 얻을 수 있으므로 장황한 for 루프 및 배열 생성이 필요하지 않습니다. 훨씬 더 인체공학적으로 조작할 수 있습니다.
import array2fancy from '@stdlib/array-to-fancy'; // Create a plain array: const x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // Turn the plain array into a "fancy" array: const y = array2fancy( x ); // Select the first three elements: const v = y[ ':3' ]; // returns [ 1, 2, 3 ] // Select every other element, starting from the second element: v = y[ '1::2' ]; // returns [ 2, 4, 6, 8 ] // Select every other element, in reverse order, starting with the last element: v = y[ '::-2' ]; // returns [ 8, 6, 4, 2 ] // Set all elements to the same value: y[ ':' ] = 9; // Create a shallow copy by selecting all elements: v = y[ ':' ]; // returns [ 9, 9, 9, 9, 9, 9, 9, 9 ]
슬라이스 의미론 외에도 Jaysukh는 부울 배열에 대한 stdlib 지원을 추가하여 부울 배열 마스킹의 기반을 마련했습니다.
import BooleanArray from '@stdlib/array-bool'; import array2fancy from '@stdlib/array-to-fancy'; // Create a plain array: const x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // Turn the plain array into a "fancy" array: const y = array2fancy( x ); // Create a shorthand alias for creating an array "index" object: const idx = array2fancy.idx; // Create a boolean mask array: const mask = new BooleanArray( [ true, false, false, true, true, true, false, false ] ); // Retrieve elements according to the mask: const z = x[ idx( mask ) ]; // returns [ 1, 4, 5, 6 ]
이후 정수 배열 인덱싱에 대한 지원을 추가하기 위해 부울 배열 마스킹에 대한 지원을 추가할 때 배운 내용을 적용했습니다.
import Int32Array from '@stdlib/array-int32'; import array2fancy from '@stdlib/array-to-fancy'; // Create a plain array: const x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // Turn the plain array into a "fancy" array: const y = array2fancy( x ); // Create a shorthand alias for creating an array "index" object: const idx = array2fancy.idx; // Create an integer array: const indices = new Int32Array( [ 0, 3, 4, 5 ] ); // Retrieve selected elements: const z = x[ idx( indices ) ]; // returns [ 1, 4, 5, 6 ]
위에서는 내장된 JavaScript 배열 객체를 사용한 멋진 인덱싱을 보여주지만 최근에는 멋진 인덱싱 개념을 stdlib ndarray로 확장했습니다. 이에 대해서는 향후 블로그 게시물에서 더 자세히 설명하겠습니다.
말할 필요도 없이, 우리는 이러한 개발이 JavaScript의 대화형 컴퓨팅 및 탐색적 데이터 분석에 대한 사용자 경험을 크게 향상시킬 것이라고 믿기 때문에 특히 기대하고 있습니다.
마지막으로 2024년은 자동화의 해였는데, 필립 부르크하르트의 노력을 빼면 아쉬울 것 같습니다. Philipp은 CI 구축 및 테스트 인프라를 개선하고 프로젝트의 전반적인 확장성을 개선하는 데 중요한 역할을 했습니다. 그의 작품은 다양했지만, 제가 강조하고 싶은 몇 가지 핵심 내용이 있습니다.
우리는 프로젝트 자동화 도구 분야에서 상당한 진전을 이루었지만 추가 자동화 및 도구 개선을 위한 아이디어가 결코 부족하지 않은 것 같습니다. 2025년에는 더 많은 일이 일어날 것으로 예상됩니다! ?
그럼 2025년에는 어떤 일이 일어날까요?! 물어봐주셔서 기뻐요!
위 섹션에서 이미 다양한 이니셔티브를 언급했지만, 전반적으로 다음 해에 우리의 노력을 집중할 계획은 다음과 같습니다.
그것은 확실히 많은 일이며, 웹을 수치 및 과학 컴퓨팅을 위한 최고 수준의 플랫폼으로 만드는 우리의 사명에 헌신하는 사람들의 커뮤니티인 마을이 필요할 것입니다. 웹에서 과학 컴퓨팅의 미래를 구축하는 데 우리와 함께할 준비가 되셨다면, 우리와 함께 하시길 바랍니다. 참여 방법을 알아보려면 기여 가이드를 확인하세요.
앞으로 올해가 제게 어떤 의미가 있었는지 개인적인 생각을 공유하고 싶습니다. 올해 우리의 성장을 감안할 때 종종 소방 호스에서 물을 마시는 것 같은 느낌이 들었습니다. 그리고 솔직히 말해서, 안내, 질문에 대한 답변, 풀 요청 검토를 원하는 사람들이 보낸 100개 이상의 새로운 알림과 메시지를 매일 아침에 확인하면 지치지 않는 것이 어려울 수 있습니다. 하지만 지난 한 해를 돌이켜보면 우리가 성취한 일이 무척 자랑스럽습니다. 특히 오픈 소스에 처음 입문한 기여자가 성장하고 번창하는 모습을 보면 마음이 뿌듯합니다. 때로는 배운 교훈을 발판으로 활용하기도 합니다. 꿈의 직업과 기회. 이를 보게 된 행운은 제가 당연하게 여기지 않으려고 최선을 다하는 더 넓은 오픈 소스 세계에서의 원동력이자 특권입니다.
이것으로 2024년 회고전을 마무리합니다. 우리가 함께 성취한 모든 것을 되돌아보면 웹상의 과학 컴퓨팅의 미래가 이보다 더 밝았던 적은 없었습니다! 그동안 도움을 주신 관계자 여러분께 다시 한 번 감사드립니다. 앞으로의 길은 흥미진진한 기회로 가득 차 있으며, 2025년에 우리가 함께 무엇을 성취할 수 있을지 기대됩니다. 앞으로 나아가세요! ?
stdlib는 프로젝트 개발을 가속화하고 전문적으로 제작된 고품질 소프트웨어에 의존하고 있다는 사실을 확신할 수 있도록 강력한 고성능 라이브러리의 포괄적인 제품군을 제공하는 데 전념하는 오픈 소스 소프트웨어 프로젝트입니다.
이 게시물이 마음에 드셨다면 별표를 남겨주세요. GitHub에서 프로젝트를 재정적으로 지원하는 것을 고려해보세요. 귀하의 기여와 지속적인 지원은 프로젝트의 장기적인 성공을 보장하며 크게 감사드립니다!
위 내용은 회고적인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!