3. Difference in behavior

Since all references is now checked prepass, dead code can cause errors. For example, a function that never gets called will now generate an error:

.function myFunc1() {
   .var x = unknownSymbol; // Error: Undefined symbol
}

If-directives inside functions/defines is now scoped, meaning you can't do like this anymore (This is already the case for .if directives outside functions/defines):

.function myFunc1(flag) {
   .if (flag)
      .var message = "flag is true"
   else 
      .var message = "flag is false"

   .print message  // Error - 'message' is unknown
}