# File kwartz.rb, line 226
    def self.compile!(input_filename, output_filename, plogic_filename=nil, lang='ruby', toppings={})
        input = File.open(input_filename) { |f| f.flock(File::LOCK_SH); f.read() }
        plogic = nil
        if plogic_filename && FileTest.exist?(plogic_filename)
            plogic = File.open(plogic_filename) { |f| f.flock(File::LOCK_SH); f.read() }
        end
        compiler = Kwartz::Compiler.new(lang, toppings)
        output = compiler.compile(input, plogic)
        File.open(output_filename, "w") { |f| f.flock(File::LOCK_EX); f.write(output) }
        return output
    end