Många forskare har utforskat sätt att föra statiskt skrivande till dynamiska språk. Men till dags dato är sådana system inte tillräckligt exakta när typer beror på värden, som ofta uppstår när man använder vissa Ruby-bibliotek. Till exempel, typ säkerhet för en databas fråga i Ruby on Rails beror på tabellen och kolumnnamn som används i frågan. För att ta itu med detta problem introducerar vi CompRDL, ett typsystem för Ruby som tillåter biblioteksmetodsignaturer att inkludera typnivåberäkningar (eller komptyper för kort). I kombination med singleton-typer för tabell- och kolumnnamn låter comp-typer oss ge databassökmetoder typsignaturer som beräknar en tabells schema för att ge mycket exakt typinformation. Komptyper för hash, array och strängbibliotek kan också öka precisionen och därmed minska behovet av typgjutningar. Vi formaliserar CompRDL och bevisar dess typsystem ljud. I stället för att typkontrollera biblioteksmetodernas organ med komptyper — kan dessa metoder inbegripa infödd kod eller vara komplicerade — CompRDL-insatser körtidskontroller för att se till att biblioteksmetoderna följer deras beräknade typer. Vi utvärderade CompRDL genom att skriva noteringar med typnivåberäkningar för flera Ruby-kärnbibliotek och databasförfrågan API:er. Vi använde sedan dessa anteckningar för att skriva kolla två populära Ruby bibliotek och fyra Ruby på Rails webbappar. Vi fann att kommentarerna var relativt kompakta och kunde framgångsrikt typ checka 132 metoder över våra ämnesprogram. Dessutom har användningen av typ-nivå beräkningar gjort det möjligt för oss att kontrollera mer expressiva egenskaper, med färre manuellt tillstånd att göra digitala eller hårda kopior av hela eller delar av detta arbete för personligt eller klassrum användning beviljas utan avgift, förutsatt att kopior inte görs eller distribueras för vinst eller kommersiella fördelar och att kopior bär detta meddelande och den fullständiga citering på första sidan. Upphovsrätt till delar av detta verk som ägs av andra än upphovsmannen måste hedras. Abstraktering med kredit är tillåten. För att kopiera på annat sätt, eller återpublicera, för att posta på servrar eller för att omfördela till listor, krävs tidigare specifik behörighet och/eller avgift. Begär tillstånd från authoritys@acm.org. PLDI '19, juni 22ś26, 2019
Vi lyfter vidare fram det arbete som nyligen utförts av REF, som tar upp godtyckliga beräkningar på typnivå i Ruby-biblioteken och injicerar lämpliga kontroller av körtid för att se till att biblioteksmetoderna följer deras beräknade typ.
Type-level computations for Ruby libraries
{'venue': 'PLDI 2019', 'journal': None, 'mag_field_of_study': ['Computer Science']}