diff --git a/src/evalvars.c b/src/evalvars.c
index 187670a..91883dd 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2864,6 +2864,14 @@
 	semsg(_(e_illvar), name);
 	return;
     }
+    if (current_sctx.sc_version == SCRIPT_VERSION_VIM9
+	    && ht == &globvarht
+	    && (flags & LET_NO_COMMAND) == 0)
+    {
+	semsg(_(e_declare_global), name);
+	return;
+    }
+
     is_script_local = ht == get_script_local_ht();
 
     di = find_var_in_ht(ht, 0, varname, TRUE);
diff --git a/src/globals.h b/src/globals.h
index 8cc9385..b6356a3 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1788,6 +1788,7 @@
 EXTERN char e_lock_unlock[]	INIT(= N_("E940: Cannot lock or unlock variable %s"));
 EXTERN char e_const_req_value[] INIT(= N_("E1021: const requires a value"));
 EXTERN char e_type_req[]	INIT(= N_("E1022: type or initialization required"));
+EXTERN char e_declare_global[]	INIT(= N_("E1016: Cannot declare a global variable: %s"));
 #endif
 #if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
 EXTERN char e_alloc_color[]	INIT(= N_("E254: Cannot allocate color %s"));
diff --git a/src/scriptfile.c b/src/scriptfile.c
index abfa3b5..caeab19 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1873,7 +1873,7 @@
     nr = getdigits(&eap->arg);
     if (nr == 0 || *eap->arg != NUL)
 	emsg(_(e_invarg));
-    else if (nr > 4)
+    else if (nr > SCRIPT_VERSION_MAX)
 	semsg(_("E999: scriptversion not supported: %d"), nr);
     else
     {
diff --git a/src/structs.h b/src/structs.h
index 9addf1a..ce9dfbc 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -67,6 +67,8 @@
 typedef struct VimMenu vimmenu_T;
 #endif
 
+// maximum value for sc_version
+#define SCRIPT_VERSION_MAX 4
 // value for sc_version in a Vim9 script file
 #define SCRIPT_VERSION_VIM9 999999
 
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 557b90b..2862289 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -1190,7 +1190,7 @@
     def FuncTwo(): string
       return 'two'
     enddef
-    let g:res_FuncOne: string = execute('disass FuncOne')
+    g:res_FuncOne = execute('disass FuncOne')
   END
   writefile(lines, 'Xdisassemble')
   source Xdisassemble
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 499699c..6a9d4ba 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -323,7 +323,7 @@
     str->MyFunc()
     assert_equal('barfoo', var)
 
-    let g:value = 'value'
+    g:value = 'value'
     g:value->MyFunc()
     assert_equal('value', var)
 
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index d1587a2..ec1fc87 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1099,11 +1099,11 @@
 
   g:glob = 2
   if false
-    execute('let g:glob = 3')
+    execute('g:glob = 3')
   endif
   assert_equal(2, g:glob)
   if true
-    execute('let g:glob = 3')
+    execute('g:glob = 3')
   endif
   assert_equal(3, g:glob)
 
@@ -1790,8 +1790,8 @@
 enddef
 
 def Test_vim9_comment_not_compiled()
-  au TabEnter *.vim let g:entered = 1
-  au TabEnter *.x let g:entered = 2
+  au TabEnter *.vim g:entered = 1
+  au TabEnter *.x g:entered = 2
 
   edit test.vim
   doautocmd TabEnter #comment
@@ -1811,7 +1811,7 @@
 
   CheckScriptSuccess([
       'vim9script',
-      'let g:var = 123',
+      'g:var = 123',
       'let w:var = 777',
       'unlet g:var w:var # something',
       ])
@@ -1819,6 +1819,11 @@
   CheckScriptFailure([
       'vim9script',
       'let g:var = 123',
+      ], 'E1016:')
+
+  CheckScriptFailure([
+      'vim9script',
+      'g:var = 123',
       'unlet g:var# comment1',
       ], 'E108:')
 
@@ -1889,11 +1894,11 @@
 def Test_finish()
   let lines =<< trim END
     vim9script
-    let g:res = 'one'
+    g:res = 'one'
     if v:false | finish | endif
-    let g:res = 'two'
+    g:res = 'two'
     finish
-    let g:res = 'three'
+    g:res = 'three'
   END
   writefile(lines, 'Xfinished')
   source Xfinished
diff --git a/src/userfunc.c b/src/userfunc.c
index 97c8f87..8a1b9ed 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3325,6 +3325,9 @@
 
     if (eap->cmdidx == CMD_def)
 	set_function_type(fp);
+    else if (fp->uf_script_ctx.sc_version == SCRIPT_VERSION_VIM9)
+	// :func does not use Vim9 script syntax, even in a Vim9 script file
+	fp->uf_script_ctx.sc_version = SCRIPT_VERSION_MAX;
 
     goto ret_free;
 
diff --git a/src/version.c b/src/version.c
index ab618af..47bf03e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1024,
+/**/
     1023,
 /**/
     1022,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 2ac7a0a..54f47b9 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -4871,8 +4871,7 @@
 		dest = dest_global;
 		if (is_decl)
 		{
-		    semsg(_("E1016: Cannot declare a global variable: %s"),
-									 name);
+		    semsg(_(e_declare_global), name);
 		    goto theend;
 		}
 	    }
