I takt med att hårdvara blivit allt kraftfullare så läggs det mindre kraft på att optimera mjukvara. Programmen blir ”fetare”, helt enkelt. Det här är en utveckling som har pågått sedan, minst, sextiotalet.

Men på senare år har det vänt till viss del. Anledningen är att enheter med mindre kapacitet, som smartmobiler, används allt mer. Koppla det till en ambition att använda så lika utvecklings- och driftsmiljöer som möjligt för alla olika typer av enheter, allt från små IoT-prylar till stora servrar, så får man problem.

De färdiga programmen blir för omfångsrika för de minsta enheterna.

Läs också: Visual Studio får en värdig utmanare

Det här är en stor anledning bakom ett Microsoftprojekt som heter IL Linker. IL i namnet syftar på Intermediate Language (eller Common Intermediate Language, för att vara helt korrekt). Det är den typen av kod som Dotnetprogram kompileras till för att kunna köras. En länkare (linker) är den mjukvara som ”bakar” ihop de olika delar som tillsammans ska utgöra ett körbart program.

IL Linker minskar storleken på ett körbart program genom att skala bort de delar av bibliotek som inte används i programmet. Bibliotek i det här sammanhanget syftar på färdig kod som är en del av Dotnetplattformen. IL Linker Gör det här genom att analysera programmet.

Det är teamet på Microsoft som jobbar med Mono, enkelt uttryckt en öppen variant av Dotnetplattformen, som står bakom IL Linker. Målet är att IL Linker ska bli ”den främsta länkaren för Dotnetekosystemet”.

Läs också: Microsoft trixar med minnet i Dotnet

Hur mycket den nya länkaren kan minska storleken på program varierar så klart. Enligt Microsoft kan i alla falla program bli hälften så stora, i ”triviala fall”. För närvarande finns det en förhandsversion av IL Linker som fungerar på en liten delmängd av alla Dotnetprogram, skriver Infoworld.

Projektet är krångligt, främst på grund av den dynamiska naturen för Dotnet. Eftersom ny funktionalitet kan ”importeras” av ett program under körning av det kan det vara svårt att avgöra vad som kan skalas bort. Det här är utmaningar som Dotnet delar med många moderna plattformar.