behavior is not what was expected both syntactic merging and semantic merging greatly increase runtimesand are very limiting since they are tightly coupled to specific programming languages in practiceline-based merging is used in conjunction with small set of unit tests ( "smoke suite"invoked with pre-commit hook script compilation finds syntax and static semantics errorsand the tests (hopefullyidentify deeper semantic issues int sum(int nint total for (int ni++total total ireturn total}version int sum(int nif ( return int total for (int ni++total +ireturn total}int sum( )void sum(int nintresultint total for (int ni++total total *result total}version version void sum(int nintresultif ( return int total for (int ni++total total *result total}int sum( )merge of versions and figure an example of -way line based merge scripting languages scripting languagessuch as awkperland python were originally developed as tools for quick hacksrapid prototypingand gluing together other programs they have evolved into mainstream