0%

【文章翻譯】Google Summer of Code 2022 Results

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

Google Summer of Code 2022 成果

Google Summer of Code (GSoC) 計劃的重點是讓全球新的開發人員參與開源軟體開發。Google 贊助學生在夏季與一個指導性的開源組織合作,進行一個為期 12 週的程式設計專案。在過去的 17 年裡,已有超過 18,000 名貢獻者參與了 Google Summer of Code。

在 2022 年,Dart 連續第三年作為指導組織參與 Google Summer of Code。繼我們在 3 月份 徵求提案 之後,我們收到了來自世界各地潛在參與者的 50 份專案提案。今天,我們重點介紹了我們在今年夏天指導的一些專案。貢獻者在這篇文章中描述了他們的專案。

Dart 的 JNI 互通性

Mahesh Hegde

Android 平台使用 Java 作為其官方語言。從 Dart 存取其豐富的生態系統將會增加巨大的價值,因此我開發了一個 Java Native Interface (JNI) 與 Dart 的互通性作為我的 GSoC 專案。

package:jnigen 產生繫結,以便從 Dart 使用 Java 類別和方法。jnigen 產生包裝 Java 函式庫的 C 繫結,以及調用這些 C 繫結的 Dart 繫結。支援函式庫 package:jni 提供初始化和存取 JNI 的常用函數。

考慮到 Java 和 JNI 的複雜性,Dart 的 JNI 互通性仍然是實驗性的。互通性可以包裝 Java 語言的基本功能,例如建構函式、靜態和實例方法以及欄位 getter。Java 中的例外會在 Dart 中「重新拋出」,並帶有原始堆疊追蹤。互通性無法從 Dart 子類別化 Java 類別或傳遞回調。在 GSoC 之後,我們計劃改進繫結產生管道,並實作更多 Java 語言功能。

該專案的技術複雜性被證明具有挑戰性。我們知道以前沒有任何使用 JNI 的原生編譯高階語言嘗試過 Java 互通性。當某些東西沒有按預期工作時,我們經常不得不尋找解決方法,例如動態函式庫載入和 JNI 例外。我最終編寫了幾個工具來幫助這個專案。這些工具包括一個從 maven 獲取 Java 原始程式碼的工具,以及另一個建立共享函式庫的工具。我學到了很多關於時間管理、優先排序、測試以及編寫簡潔、可讀和易懂程式碼的知識。

Flutter 社群管理儀表板

Abdelrahman Amer

對於 GSoC’22,我設計並建立了一個 GitHub 上 Flutter 社群儲存庫的管理儀表板。該儀表板透過彙總儲存庫、維護者、存取級別等方面的最新活動來協助 Flutter 社群管理員。它包含一個觸發器來建構和部署到 pub.dev。我使用 Flutter 作為前端,Firebase 作為後端來實作該專案。

在專案期間,我開發了一些有趣的可重複使用的元件,包括:

  1. Firebase 抽象層
  2. MVC Widget 和相關的資料結構類別,用於顯示可按任何欄位排序的任何表格資訊
  3. MVC Widget 和資料結構類別,用於顯示圖形 2D 資料

管理儀表板缺少一些功能,但核心功能已經實作。我期待在 GSoC 時期之後繼續開發更多功能。

GSoC 經驗教會了我寶貴的開發技能,尤其是在 Flutter 方面。我非常感謝這個機會、良好的工作環境、我獲得的經驗以及我從 Majid 那裡獲得的指導。

偵測不正確的版本約束

Arseny Uskov

套件維護者必須為每個 Dart 套件版本分配適當的版本。他們必須決定是否根據依賴於其套件的使用者引入了重大變更。相依套件也假設每個 相依的適當版本範圍是什麼。

在這些方面的不正確假設可能會產生錯誤。我的專案旨在識別和調查這些錯誤的子集。

由 `package:foo` 的不正確版本控制引起的不正確相依約束

該專案提供了工具,可以彙總給定套件的給定版本的公共 API 的一部分。此摘要會識別任何依賴於給定套件的其他套件,這些套件可能有不正確的版本約束。我們涵蓋的使用案例是套件使用在其相依之一中定義的符號,但同一符號未包含該相依的最低允許版本。

公共 API 摘要模型允許一系列其他有趣的靜態分析應用程式。在 GSoC 期間,我們沒有時間探索它們。若要進一步了解,請參閱關於該專案的 API 分析部落格文章、我們面臨的挑戰、從對 pub.dev 生態系統運行分析收集的結果、在實際套件中發現的錯誤以及自行修改專案的起點。

非常感謝所有使用 Dart 申請 Google Summer of Code 2022 的人,感謝今年完成專案的貢獻者,以及感謝幫助使這個程式碼之夏變得精彩的導師。如果您有興趣進一步了解 Dart 在 Google Summer of Code 中的應用,請查看我們 2021 年的文章


Google Summer of Code 2022 成果 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。