Required modifications to OpenACS request processor procedures to support precompiled .tbc files in addition to .tcl files. 1) template::adp_prepare add: elseif { [file exists $__adp_stub.tbc] } { # ensure that data source preparation procedure exists and is up-to-date adp_init tbc $__adp_stub # remember the file_stub in case the procedure changes it set __adp_remember_stub $__adp_stub # execute data source preparation procedure code::tbc::$__adp_stub # propagate aborting global request_aborted if [info exists request_aborted] { ns_log warning "propagating abortion from $__adp_remember_stub.tbc\ (status [lindex $request_aborted 0]): '[lindex $request_aborted 1]')" adp_abort } # if the file has changed than prepare again if { ! [string equal $__adp_stub $__adp_remember_stub] } { adp_prepare; # propagate result up } { return 1 } } 2) template::adp_init add: tbc { set code [template::util::read_file $file_stub.tbc] } 3) In request-processor-init.tcl add: tbc rp_handle_tcl_request in: foreach { type handler } { tcl rp_handle_tcl_request tbc rp_handle_tcl_request adp rp_handle_adp_request vuh rp_handle_tcl_request } { rp_register_extension_handler $type $handler } 4) apm_guess_file_type modify: [string equal $extension ".tcl"] to [string equal $extension ".tcl"] || [string equal $extension ".tbc"] And [regexp -- {-(procs|init)(-[0-9a-zA-Z]*)?\.tcl$} [file tail $path] "" kind] to [regexp -- {-(procs|init)(-[0-9a-zA-Z]*)?\.(tcl|tbc)$} [file tail $path] "" kind] 5) apm_guess_db_type add tbc to expression: [regexp -- "\-[lindex $known_database_type 0]\.(xql|tcl|sqlj)\$" $file_name match]