What is the proper way implement a global $wp_rewrite?

It is not necessary to define $wp_rewrite in your function. The add_permastruct() and add_rewrite_rule() functions take care of that for you. Try removing the “global $wp_rewrite;” line and see if your code still works.

The add_permastruct() function currently accepts three parameters. There is some backwards-compatibility logic in the function to correct for calls using the old four-parameter structure, but you might want to change that line to use the current three parameter structure, like this:

add_permastruct( 'news', 'news/%year%/%postname%/', array('with_front' => true, 'ep_mask' => 1) );