I thought that "unsafe" means that the script can do something unsavory by using unsafeWindow to access variables in the page, getting information from these variables, sending them somewhere...
OK, Forget about the safety things.
Sorry, "without @grant and GM_xx" actually should be "without @grant or GM_xx", where I meant a script that does not specify any @grant line, yet does NOT call GM_* functions. For such a script, Greasemonkey 1.0 acts as if it specifies "@grant none", a lot of scripts are affected. I'm just wondering if it may cause compatiblity problems and conflicts for some scripts.
Example:
test.user.js:
=================CODE==================
// ==UserScript==
// @name test
// @include
http://localhost/test/test.html// ==/UserScript==
(function () {
window.addEventListener("load", function () {
window.myVar = "modified";
}, false);
})();
=================END===================
localhost/test/test.html:
=================CODE==================
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>test</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script>
var myVar = "original";
window.addEventListener("load", function () {
window.setTimeout(function() {
alert(myVar);
}, 1000);
}, false);
</script>
</head>
<body>
</body>
</html>
=================END===================
It shows "modified" in Greasemonkey v1.0, but shows "original" before v1.0.