scope loadLibraryOrSrcLib. sbool #srcLibsEnabled = true; // to avoid checking src libs too often when booting OS static ThreadLocal> #tempCache = new ThreadLocal; static new ThreadLocal> loadLibraryOrSrcLib_compiler; static File loadLibraryOrSrcLib(S snippetID, IF1 compiler default loadLibraryOrSrcLib_compiler!) ctex { vmBus_send loadLibraryOrSrcLib(snippetID); long id = parseSnippetID(snippetID); if (#tempCache! != null) { File f = #tempCache->get(id); if (f != null) ret f with print(snippetID + " from tempCache: " + f); } bool srcLib = #srcLibsEnabled && isMarkedAsSrcLib(snippetID); if (srcLib) { print(snippetID + " marked as src lib, compiling"); File f; if (compiler != null) f = compiler.get(snippetID); else f = pairA(hotwire_compile(snippetID)); print("Src lib: " + f); mapPut(#tempCache!, id, f); ret f; } File f = DiskSnippetCache_getLibrary(id); if (fileSize(f) != 0) ret f/* with print(snippetID + " from disk cache: " + f)*/; try { print("Trying " + snippetID + " as binary library"); ret loadDataSnippetToFile(snippetID); } catch e { if (#srcLibsEnabled) { print("Trying " + snippetID + " as src lib"); if (nempty(loadSnippet(snippetID))) { print("Is src lib."); markAsSrcLib(snippetID); ret pairA(hotwire_compile(snippetID)); } } throw rethrow(e); } }