I wonder whether the new error for out of range indices will break any code. I don't mind myself - it will be interesting to find out...
Few, if any, have used overflowing indices has a means to reach the last or first element in a list, on purpose. A quick check on most of my own code, revealed no problems.
As somebody pointed out, a lot of sloppy code might turn up now throwing error messages, but that would be a good thing.
Out of curiousity - did you decide that returning nil wasn't a good idea?
I thought, returning 'nil' was a bad idea, because it created ambiguous situations, when 'nil' itself is part of the list and is returned, so it's nothing you can test on, except you are sure, you do not have 'nil's in your list.
There was another odd situation in the old ways of working: (pop '() 0) returned 'nil'. With 9.2.12 (pop '() 0) will throw an error but (pop '()) will still throw 'nil', we have to see how this is received by most users. Nobody has commented anything about it in the past.
In any case, when popping lists iteratively or recursively one should test with 'empty?' or test on the boolean value as in: (while myList (pop-it)), never rely on a popped 'nil' to be an indicator that the list is empty.
Lutz