Index: test/studies/shootout/spectral-norm/bradc/spectralnorm-blc.chpl
===================================================================
--- test/studies/shootout/spectral-norm/bradc/spectralnorm-blc.chpl	(revision 22590)
+++ test/studies/shootout/spectral-norm/bradc/spectralnorm-blc.chpl	(working copy)
@@ -34,7 +34,7 @@
 //
 proc multiplyAv(v: [?Dv], Av: [?DAv]) {
   forall i in DAv do
-    serial (true) do  // TODO: deprecrate need for true
+    serial do
       Av[i] = + reduce [j in Dv] (A[i,j] * v[j]);
 }
 
@@ -44,7 +44,7 @@
 //
 proc multiplyAtv(v: [?Dv], Atv: [?DAtv]) {
   forall i in DAtv do
-    serial (true) do  // TODO: deprecrate need for true
+    serial do
       Atv[i] = + reduce [j in Dv] (A[j,i] * v[j]);
 }
 
Index: spec/Task_Parallelism_and_Synchronization.tex
===================================================================
--- spec/Task_Parallelism_and_Synchronization.tex	(revision 22588)
+++ spec/Task_Parallelism_and_Synchronization.tex	(working copy)
@@ -765,14 +765,18 @@
 parallelism.  The syntax is:
 \begin{syntax}
 serial-statement:
-  `serial' expression `do' statement
-  `serial' expression block-statement
+  `serial' expression[OPT] `do' statement
+  `serial' expression[OPT] block-statement
 \end{syntax}
-where the expression evaluates to a bool type.  Independent of that
-value, the \sntx{statement} is evaluated. If the expression is true,
-any dynamically encountered code that would result in new tasks is
-executed without creating any new tasks.  In effect, execution is
-serialized.
+where the optional \sntx{expression} evaluates to a boolean value.  If
+the expression is omitted, it is as though 'true' were specified.
+Whatever the expression's value, the statement following it is
+evaluated. If the expression is true, any dynamically encountered code
+that would normally create new tasks within the statement is instead
+executed by the original task without creating any new ones.  In
+effect, execution is serialized.  If the expression is false, code
+within the statement will generates task according to normal Chapel
+rules.
 
 \begin{chapelexample}{serialStmt1.chpl}
 In the code
@@ -824,7 +828,7 @@
 var n = 3;
 \end{chapelpre}
 \begin{chapel}
-serial true {
+serial {
   begin stmt1();
   cobegin {
     stmt2();
Index: compiler/parser/chapel.ypp
===================================================================
--- compiler/parser/chapel.ypp	(revision 22588)
+++ compiler/parser/chapel.ypp	(working copy)
@@ -231,6 +231,7 @@
 | TLOCAL stmt                { $$ = buildLocalStmt($2); }
 | TON expr do_stmt           { $$ = buildOnStmt($2, $3); }
 | TSERIAL expr do_stmt       { $$ = buildSerialStmt($2, $3); }
+| TSERIAL do_stmt            { $$ = buildSerialStmt(new SymExpr(gTrue), $2); }
 | TSYNC stmt                 { $$ = buildSyncStmt($2); }
 | TUSE expr_ls TSEMI         { $$ = buildUseStmt($2); }
 | TYIELD expr TSEMI          { $$ = buildPrimitiveStmt(PRIM_YIELD, $2); }
