diff --git a/doc/ref/api-evaluation.texi b/doc/ref/api-evaluation.texi index e20bad429..0a85ec98b 100644 --- a/doc/ref/api-evaluation.texi +++ b/doc/ref/api-evaluation.texi @@ -567,8 +567,9 @@ Add @var{dir} to the front of the module load path. @item -o @var{ofile} @itemx --output=@var{ofile} -Write output bytecode to @var{ofile}. By convention, bytecode file names end -in @code{.go}. +Write output bytecode to @var{ofile}. By convention, bytecode file +names end in @code{.go}. When @option{-o} is omitted, the output file +name is as for @code{compile-file} (see below). @item -W @var{warning} @itemx --warn=@var{warning} @@ -589,6 +590,9 @@ Use @var{lang} as the target language of @var{file}. If this option is omitted, @end table +Each @var{file} is assumed to be UTF-8-encoded, unless it contains a +coding declaration as recognized by @code{file-encoding} +(@pxref{Character Encoding of Source Files}). @end deffn The compiler can also be invoked directly by Scheme code using the procedures @@ -608,6 +612,9 @@ Compile the file named @var{file}. Output will be written to a file in the current directory whose name is computed as @code{(compiled-file-name @var{file})}. + +As with @command{guile-tools compile}, @var{file} is assumed to be +UTF-8-encoded unless it contains a coding declaration. @end deffn @deffn {Scheme Procedure} compiled-file-name file diff --git a/module/system/base/compile.scm b/module/system/base/compile.scm index 7c83fd7f5..35dc0b197 100644 --- a/module/system/base/compile.scm +++ b/module/system/base/compile.scm @@ -1,6 +1,6 @@ ;;; High-level compiler interface -;; Copyright (C) 2001, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2009, 2010, 2011 Free Software Foundation, Inc. ;;; This library is free software; you can redistribute it and/or ;;; modify it under the terms of the GNU Lesser General Public @@ -120,8 +120,9 @@ (let* ((comp (or output-file (compiled-file-name file))) (in (open-input-file file)) (enc (file-encoding in))) - (if enc - (set-port-encoding! in enc)) + ;; Choose the input encoding deterministically. + (set-port-encoding! in (or enc "UTF-8")) + (ensure-writable-dir (dirname comp)) (call-with-output-file/atomic comp (lambda (port)