Hi guilers, Earlier today I had a compilation warning while running a script.
~/src/mine/algorithms-course $ guile -L . -s invsinarray.scm ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/ian/src/mine/algorithms-course/invsinarray.scm ;;; WARNING: compilation of /home/ian/src/mine/algorithms-course/invsinarray.scm failed: ;;; ERROR: In procedure bytevector-u8-set!: Value out of range: 390 It ran fine, but the compilation problem was that I had a vector constant containing 100000 values[0]. Now, the vector instruction in the vm expects the value to be less than 2^16, and when compiling this it performs splits the value into two by taking the value and modulus from dividing by 256. This leads to the instruction (vector 390 160), which further on down the line write-byte fails on. This limitation is documented, and somewhat reasonable, but on IRC mark weaver asked me to file a bug anyway, since he thinks the assembler should have a fall back plan. [0] as you can guess from the names, it was data provided for an online algorithms class I'm taking. I did the lazy thing and just wrapped the file in #(...). I've since changed it to actually read the vector from the file. -- Ian Price "Programming is like pinball. The reward for doing it well is the opportunity to do it again" - from "The Wizardy Compiled"
