I olika scenarier finns det ett behov av att exponera ett visst API för klientprogram som inte är helt betrodda. I de fall där klientprogrammen behöver tillgång till känsliga uppgifter kan sekretess upprätthållas med hjälp av en informationsflödespolicy. Detta är en allmän och kraftfull politik som har studerats och genomförts i stor utsträckning. Tidigare arbete har visat hur politiken för informationsflöde kan genomföras på ett lättviktigt sätt i form av ett bibliotek. Dessa tillvägagångssätt lider emellertid alla av ett antal begränsningar. Ofta är policyn och dess efterlevnad inte helt åtskilda från det underliggande API:et, och användaren av API:et utsätts för ett starkt och onaturligt modifierat gränssnitt. Vissa av tillvägagångssätten är begränsade till funktionella API:er och har svårt att hantera tvingande funktioner som I/O och muterbara tillståndsvariabler. Dessutom använder detta tidigare arbete klassiska statiska informationsflöde exekutiva tekniker, och tar inte hänsyn till nyare dynamiska informationsflöde exekutiva tekniker. I detta dokument visar vi att informationsflödespolicyer kan tillämpas på imperativt monadiska API:er i form av monadiska API:er på ett modulärt och någorlunda allmänt sätt med endast en mindre inverkan på gränssnittet som tillhandahålls API-användare. Huvudidén med detta dokument är att vi genomför den politiska tillämpningen i en monadtransformator medan det underliggande monadiska API förblir omedvetna och omodifierade. Policyn specificeras genom upphävande av underliggande monadoperationer. Vi visar hur allmän vår strategi är genom att presentera genomförandet av tre viktiga metoder för genomförande av informationsflödet, inklusive en rent dynamisk, en rent statisk och en hybridteknik. Två av teknikerna kräver en generalisering av Monad-typklassen, men påverkan på API-gränssnittet förblir begränsad. Vi visar att vår teknik lämpar sig för formella resonemang genom att skissa ett bevis på att vår implementering av den statiska tekniken är trogen den ursprungliga presentationen. Slutligen diskuterar vi grundläggande begränsningar i vårt tillvägagångssätt och hur det passar in i den allmänna teorin om tillämpning av informationsflödet.
Denna idé förbättrades ytterligare genom att tillämpningen av informationsflödespolitiken genomfördes i en monadtransformator skild från det underliggande monadiska API som förblir omedveten och omodifierad REF, där policyn specificeras genom att de underliggande monadoperationerna lyfts till den omvandlade monaden.
Information flow enforcement in monadic libraries
{'venue': "TLDI '11", 'journal': None, 'mag_field_of_study': ['Computer Science']}