O usłudze
PrzetłumaczonePiszę kod przetestowany w boju w Chez Scheme dla zespołów, które potrzebują prawdziwej natywnej prędkości, a nie interpretera, który wygląda dobrze tylko w demonstracjach. Przez ostatnie dziewięć lat dostarczałem kompilatory, narzędzia uruchomieniowe i długoterminowe usługi w Chez Scheme, w tym pracę bezpośrednio pod backendem Racket, gdzie Chez Scheme dźwiga główny ciężar. Jeśli masz rdzeń numeryczny, parser, silnik reguł lub potok danych, który jest zbyt wolny w języku skryptowym, przeniosę go do Chez Scheme i sprawię, że będzie działał prawie tak szybko jak ręcznie napisany C.
Codziennie korzystam z pełnej powierzchni R6RS: czysta struktura biblioteki, importy fazowe, odpowiednie typy rekordów, hierarchie warunkowe i przenośne I/O. Czuję się komfortowo w głębi systemu makr — piszę higieniczne transformacje z użyciem syntax-rules i pełnych transformerów syntax-case, buduję małe osadzone DSL i rozplątuję chaotyczne makra, aby rozwijały się przewidywalnie i kompilowały szybko. Gdy wydajność ma znaczenie, analizuję kod maszynowy generowany przez Chez Scheme, dostosowuję poziomy optymalizacji, redukuję alokacje, stosuję specjalizacje flonum i fixnum oraz wywołuję niebezpieczne prymitywy tylko tam, gdzie są udowodnione jako poprawne.
Osadzanie i interoperacyjność to duża część mojej pracy. Łączę Chez Scheme z C i Rust przez jego interfejs funkcji obcych, tworzę Scheme jako warstwę skryptową wewnątrz dużego hosta i pakuję pliki startowe oraz kod obiektowy, aby wdrożenie było pojedynczym artefaktem. Zajmuję się również wątkami, zarządzaniem zasobami w stylu kustosza, obsługą sygnałów i eleganckim zamykaniem dla usług, które muszą działać przez miesiące.
Typowy wynik: działający i zmierzony moduł lub usługa, czytelny zestaw testów, skrypty budowania i krótki dokument opisujący architekturę i punkty rozszerzeń. Profiluję przed i po, więc przyspieszenia są mierzone, a nie twierdzone. Wyślij mi wolny kod lub surową specyfikację — a szczerze powiem, czy Chez Scheme pasuje tutaj i jaki rzeczywisty zysk jest możliwy.
Codziennie korzystam z pełnej powierzchni R6RS: czysta struktura biblioteki, importy fazowe, odpowiednie typy rekordów, hierarchie warunkowe i przenośne I/O. Czuję się komfortowo w głębi systemu makr — piszę higieniczne transformacje z użyciem syntax-rules i pełnych transformerów syntax-case, buduję małe osadzone DSL i rozplątuję chaotyczne makra, aby rozwijały się przewidywalnie i kompilowały szybko. Gdy wydajność ma znaczenie, analizuję kod maszynowy generowany przez Chez Scheme, dostosowuję poziomy optymalizacji, redukuję alokacje, stosuję specjalizacje flonum i fixnum oraz wywołuję niebezpieczne prymitywy tylko tam, gdzie są udowodnione jako poprawne.
Osadzanie i interoperacyjność to duża część mojej pracy. Łączę Chez Scheme z C i Rust przez jego interfejs funkcji obcych, tworzę Scheme jako warstwę skryptową wewnątrz dużego hosta i pakuję pliki startowe oraz kod obiektowy, aby wdrożenie było pojedynczym artefaktem. Zajmuję się również wątkami, zarządzaniem zasobami w stylu kustosza, obsługą sygnałów i eleganckim zamykaniem dla usług, które muszą działać przez miesiące.
Typowy wynik: działający i zmierzony moduł lub usługa, czytelny zestaw testów, skrypty budowania i krótki dokument opisujący architekturę i punkty rozszerzeń. Profiluję przed i po, więc przyspieszenia są mierzone, a nie twierdzone. Wyślij mi wolny kod lub surową specyfikację — a szczerze powiem, czy Chez Scheme pasuje tutaj i jaki rzeczywisty zysk jest możliwy.