diff --git a/src/version.c b/src/version.c
index fece1a1..0c147cc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    538,
+/**/
     537,
 /**/
     536,
diff --git a/src/vim9.h b/src/vim9.h
index 0c59b06..57cbfea 100644
--- a/src/vim9.h
+++ b/src/vim9.h
@@ -46,7 +46,6 @@
     ISN_PUSHS,		// push string isn_arg.string
     ISN_PUSHBLOB,	// push blob isn_arg.blob
     ISN_PUSHFUNC,	// push func isn_arg.string
-    ISN_PUSHPARTIAL,	// push partial ?
     ISN_PUSHCHANNEL,	// push channel isn_arg.channel
     ISN_PUSHJOB,	// push channel isn_arg.job
     ISN_NEWLIST,	// push list from stack items, size is isn_arg.number
@@ -92,7 +91,6 @@
     ISN_COMPARELIST,
     ISN_COMPAREDICT,
     ISN_COMPAREFUNC,
-    ISN_COMPAREPARTIAL,
     ISN_COMPAREANY,
 
     // expression operations
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 0bc50c3..90f7d28 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -396,7 +396,7 @@
     if (tv->v_type == VAR_NUMBER)
 	return &t_number;
     if (tv->v_type == VAR_BOOL)
-	return &t_bool;
+	return &t_bool;  // not used
     if (tv->v_type == VAR_STRING)
 	return &t_string;
     if (tv->v_type == VAR_LIST)  // e.g. for v:oldfiles
@@ -642,7 +642,6 @@
 	    case VAR_LIST: isntype = ISN_COMPARELIST; break;
 	    case VAR_DICT: isntype = ISN_COMPAREDICT; break;
 	    case VAR_FUNC: isntype = ISN_COMPAREFUNC; break;
-	    case VAR_PARTIAL: isntype = ISN_COMPAREPARTIAL; break;
 	    default: isntype = ISN_COMPAREANY; break;
 	}
     }
@@ -880,23 +879,6 @@
 }
 
 /*
- * Generate an ISN_PUSHPARTIAL instruction with partial "part".
- * Consumes "part".
- */
-    static int
-generate_PUSHPARTIAL(cctx_T *cctx, partial_T *part)
-{
-    isn_T	*isn;
-
-    RETURN_OK_IF_SKIP(cctx);
-    if ((isn = generate_instr_type(cctx, ISN_PUSHPARTIAL, &t_func_any)) == NULL)
-	return FAIL;
-    isn->isn_arg.partial = part;
-
-    return OK;
-}
-
-/*
  * Generate an ISN_STORE instruction.
  */
     static int
@@ -4165,9 +4147,6 @@
 	    case VAR_FUNC:
 		generate_PUSHFUNC(cctx, NULL, &t_func_void);
 		break;
-	    case VAR_PARTIAL:
-		generate_PUSHPARTIAL(cctx, NULL);
-		break;
 	    case VAR_LIST:
 		generate_NEWLIST(cctx, 0);
 		break;
@@ -4183,6 +4162,7 @@
 	    case VAR_NUMBER:
 	    case VAR_UNKNOWN:
 	    case VAR_ANY:
+	    case VAR_PARTIAL:
 	    case VAR_VOID:
 	    case VAR_SPECIAL:  // cannot happen
 		generate_PUSHNR(cctx, 0);
@@ -6018,10 +5998,6 @@
 	    blob_unref(isn->isn_arg.blob);
 	    break;
 
-	case ISN_PUSHPARTIAL:
-	    partial_unref(isn->isn_arg.partial);
-	    break;
-
 	case ISN_PUSHJOB:
 #ifdef FEAT_JOB_CHANNEL
 	    job_unref(isn->isn_arg.job);
@@ -6054,7 +6030,6 @@
 	case ISN_COMPAREFUNC:
 	case ISN_COMPARELIST:
 	case ISN_COMPARENR:
-	case ISN_COMPAREPARTIAL:
 	case ISN_COMPARESPECIAL:
 	case ISN_COMPARESTRING:
 	case ISN_CONCAT:
diff --git a/src/vim9execute.c b/src/vim9execute.c
index b7ec979..d9b87c1 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -858,7 +858,6 @@
 	    case ISN_PUSHS:
 	    case ISN_PUSHBLOB:
 	    case ISN_PUSHFUNC:
-	    case ISN_PUSHPARTIAL:
 	    case ISN_PUSHCHANNEL:
 	    case ISN_PUSHJOB:
 		if (ga_grow(&ectx.ec_stack, 1) == FAIL)
@@ -896,12 +895,6 @@
 			    tv->vval.v_string =
 					     vim_strsave(iptr->isn_arg.string);
 			break;
-		    case ISN_PUSHPARTIAL:
-			tv->v_type = VAR_PARTIAL;
-			tv->vval.v_partial = iptr->isn_arg.partial;
-			if (tv->vval.v_partial != NULL)
-			    ++tv->vval.v_partial->pt_refcount;
-			break;
 		    case ISN_PUSHCHANNEL:
 #ifdef FEAT_JOB_CHANNEL
 			tv->v_type = VAR_CHANNEL;
@@ -1412,7 +1405,6 @@
 	    case ISN_COMPARESTRING:
 	    case ISN_COMPAREDICT:
 	    case ISN_COMPAREFUNC:
-	    case ISN_COMPAREPARTIAL:
 	    case ISN_COMPAREANY:
 		{
 		    typval_T	*tv1 = STACK_TV_BOT(-2);
@@ -1932,14 +1924,6 @@
 					       name == NULL ? "[none]" : name);
 		}
 		break;
-	    case ISN_PUSHPARTIAL:
-		{
-		    partial_T *part = iptr->isn_arg.partial;
-
-		    smsg("%4d PUSHPARTIAL \"%s\"", current,
-			 part == NULL ? "[none]" : (char *)partial_name(part));
-		}
-		break;
 	    case ISN_PUSHCHANNEL:
 #ifdef FEAT_JOB_CHANNEL
 		{
@@ -2117,7 +2101,6 @@
 	    case ISN_COMPARELIST:
 	    case ISN_COMPAREDICT:
 	    case ISN_COMPAREFUNC:
-	    case ISN_COMPAREPARTIAL:
 	    case ISN_COMPAREANY:
 		   {
 		       char *p;
@@ -2154,8 +2137,6 @@
 			   case ISN_COMPARELIST: type = "COMPARELIST"; break;
 			   case ISN_COMPAREDICT: type = "COMPAREDICT"; break;
 			   case ISN_COMPAREFUNC: type = "COMPAREFUNC"; break;
-			   case ISN_COMPAREPARTIAL:
-						 type = "COMPAREPARTIAL"; break;
 			   case ISN_COMPAREANY: type = "COMPAREANY"; break;
 			   default: type = "???"; break;
 		       }
