Sonntag, 23. Oktober 2011

Das Vorhaben wird dargelegt

Vor kurzem fasste ich den Entschluss, die Bibliothek Swiss Ephemeris so umzuschreiben, dass sie nebenläufig lauffähig ist.

Dies ist ein grösseres Refactoring-Projekt, das folgende Schritte beinhaltet:

  • Bevor auch nur eine Zeile Code geändert wird, muss ein dichtes Netz von Tests bereitstehen, die automatisch, z.B. mit einer bestimmten make-Regel, alle relevanten Funktionen im aktuellen Stand der Bibliothek aufrufen und mit den erwarteten Ergebnissen vergleichen.

  • Zwar ist es theoretisch möglich, globalen Speicher in mehreren Threads wiederzuverwenden, der gelesen und geschrieben wird. Wo es möglich ist, ist es jedoch besser, wenn der Aufrufer den Speicherplatz für einen allfällig benötigten Kontext bereitstellt (also Daten "auf dem Stack statt auf dem Heap" verwendet werden). Ausnahme sind natürlich Ressourcen, die wirklich von allen Threads in identischer Form benötigt werden (z.B. die Daten von Ephemeridenfiles). Es soll ein Set von API-Funktionen angeboten werden, die genau dies ermöglichen.

  • Die bestehenden Funktionen werden an die neuen API-Funktionen angeschlossen (die dann den benötigten Speicher intern allokieren), so dass Kompatibilität mit den bisherigen Verwendungen der Swiss Ephemeris erreicht wird.


Angesichts der vielen Arbeit, die in diese Software gesteckt wurde, und angesichts der geringen Freizeit, die mir dafür zur Verfügung steht, habe ich mir für dieses Vorhaben rund ein Jahr Zeit gegeben. Ich kann damit scheitern - oder auch nicht.

Ein Blog scheint mir eine passende Form, um die kontinuierliche Arbeit an diesem Thema zu dokumentieren. Auch diesen Blog schreibe ich - wie meinen persönlichen Blog eigentlich nur für mich selbst: Durch das systematische Aufschreiben von Themen bekomme ich Klarheit in meinem Gedankenkasten. In dieser Funktion ist der Blog identisch mit einem gewöhnlichen Tagebuch. Abweichend ist nur die elektronische und überall verfügbare Form - das Medium.

Dieser Blog bleibt bis auf weiteres nur einem begrenzten Nutzerkreis zugänglich, den ich persönlich einlade.

Keine Kommentare:

Kommentar veröffentlichen