PIL: A platform independent language for retargetable DSLs