diff --git a/benchmarks/extrude/naca12_3d.geo b/benchmarks/extrude/naca12_3d.geo
new file mode 100644
index 0000000000000000000000000000000000000000..e7fddaa56c2cd1d8d44d896bfed4f526f32e1072
--- /dev/null
+++ b/benchmarks/extrude/naca12_3d.geo
@@ -0,0 +1,247 @@
+Mesh.LcIntegrationPrecision = 1.e-2;
+Geometry.Tolerance = 1e-12;
+lc = .033 ;
+lc2 = 2.2 ;
+lc3 = .033 ;
+Point(1) =  {1.000000e+00,0.000000e+00,0.000000e+00,lc3};
+Point(2) =  {9.997533e-01,0.000000e+00,-3.498543e-05,lc};
+Point(3) =  {9.990134e-01,0.000000e+00,-1.398841e-04,lc};
+Point(4) =  {9.977810e-01,0.000000e+00,-3.143904e-04,lc};
+Point(5) =  {9.960575e-01,0.000000e+00,-5.579769e-04,lc};
+Point(6) =  {9.938442e-01,0.000000e+00,-8.699747e-04,lc};
+Point(7) =  {9.911436e-01,0.000000e+00,-1.249551e-03,lc};
+Point(8) =  {9.879584e-01,0.000000e+00,-1.695579e-03,lc};
+Point(9) =  {9.842916e-01,0.000000e+00,-2.206860e-03,lc};
+Point(10) = {9.801469e-01,0.000000e+00,-2.781989e-03,lc};
+Point(11) = {9.755284e-01,0.000000e+00,-3.419365e-03,lc};
+Point(12) = {9.704404e-01,0.000000e+00,-4.117359e-03,lc};
+Point(13) = {9.648883e-01,0.000000e+00,-4.874101e-03,lc};
+Point(14) = {9.588774e-01,0.000000e+00,-5.687566e-03,lc};
+Point(15) = {9.524136e-01,0.000000e+00,-6.555737e-03,lc};
+Point(16) = {9.455034e-01,0.000000e+00,-7.476377e-03,lc};
+Point(17) = {9.381535e-01,0.000000e+00,-8.447210e-03,lc};
+Point(18) = {9.303712e-01,0.000000e+00,-9.465891e-03,lc};
+Point(19) = {9.221641e-01,0.000000e+00,-1.052998e-02,lc};
+Point(20) = {9.135405e-01,0.000000e+00,-1.163695e-02,lc};
+Point(21) = {9.045087e-01,0.000000e+00,-1.278429e-02,lc};
+Point(22) = {8.950777e-01,0.000000e+00,-1.396934e-02,lc};
+Point(23) = {8.852569e-01,0.000000e+00,-1.518951e-02,lc};
+Point(24) = {8.750558e-01,0.000000e+00,-1.644214e-02,lc};
+Point(25) = {8.644845e-01,0.000000e+00,-1.772453e-02,lc};
+Point(26) = {8.535537e-01,0.000000e+00,-1.903398e-02,lc};
+Point(27) = {8.422739e-01,0.000000e+00,-2.036772e-02,lc};
+Point(28) = {8.306563e-01,0.000000e+00,-2.172309e-02,lc};
+Point(29) = {8.187124e-01,0.000000e+00,-2.309725e-02,lc};
+Point(30) = {8.064539e-01,0.000000e+00,-2.448751e-02,lc};
+Point(31) = {7.938930e-01,0.000000e+00,-2.589105e-02,lc};
+Point(32) = {7.810421e-01,0.000000e+00,-2.730503e-02,lc};
+Point(33) = {7.679139e-01,0.000000e+00,-2.872668e-02,lc};
+Point(34) = {7.545212e-01,0.000000e+00,-3.015313e-02,lc};
+Point(35) = {7.408773e-01,0.000000e+00,-3.158154e-02,lc};
+Point(36) = {7.269957e-01,0.000000e+00,-3.300894e-02,lc};
+Point(37) = {7.128901e-01,0.000000e+00,-3.443245e-02,lc};
+Point(38) = {6.985745e-01,0.000000e+00,-3.584905e-02,lc};
+Point(39) = {6.840628e-01,0.000000e+00,-3.725576e-02,lc};
+Point(40) = {6.693696e-01,0.000000e+00,-3.864942e-02,lc};
+Point(41) = {6.545091e-01,0.000000e+00,-4.002701e-02,lc};
+Point(42) = {6.394961e-01,0.000000e+00,-4.138529e-02,lc};
+Point(43) = {6.243456e-01,0.000000e+00,-4.272101e-02,lc};
+Point(44) = {6.090723e-01,0.000000e+00,-4.403092e-02,lc};
+Point(45) = {5.936913e-01,0.000000e+00,-4.531165e-02,lc};
+Point(46) = {5.782179e-01,0.000000e+00,-4.655984e-02,lc};
+Point(47) = {5.626673e-01,0.000000e+00,-4.777199e-02,lc};
+Point(48) = {5.470549e-01,0.000000e+00,-4.894463e-02,lc};
+Point(49) = {5.313960e-01,0.000000e+00,-5.007425e-02,lc};
+Point(50) = {5.157061e-01,0.000000e+00,-5.115728e-02,lc};
+Point(51) = {5.000008e-01,0.000000e+00,-5.219014e-02,lc};
+Point(52) = {4.842954e-01,0.000000e+00,-5.316926e-02,lc};
+Point(53) = {4.686055e-01,0.000000e+00,-5.409108e-02,lc};
+Point(54) = {4.529467e-01,0.000000e+00,-5.495201e-02,lc};
+Point(55) = {4.373342e-01,0.000000e+00,-5.574857e-02,lc};
+Point(56) = {4.217836e-01,0.000000e+00,-5.647729e-02,lc};
+Point(57) = {4.063102e-01,0.000000e+00,-5.713477e-02,lc};
+Point(58) = {3.909292e-01,0.000000e+00,-5.771770e-02,lc};
+Point(59) = {3.756559e-01,0.000000e+00,-5.822293e-02,lc};
+Point(60) = {3.605053e-01,0.000000e+00,-5.864737e-02,lc};
+Point(61) = {3.454924e-01,0.000000e+00,-5.898812e-02,lc};
+Point(62) = {3.306319e-01,0.000000e+00,-5.924247e-02,lc};
+Point(63) = {3.159386e-01,0.000000e+00,-5.940786e-02,lc};
+Point(64) = {3.014269e-01,0.000000e+00,-5.948193e-02,lc};
+Point(65) = {2.871112e-01,0.000000e+00,-5.946260e-02,lc};
+Point(66) = {2.730056e-01,0.000000e+00,-5.934800e-02,lc};
+Point(67) = {2.591240e-01,0.000000e+00,-5.913650e-02,lc};
+Point(68) = {2.454802e-01,0.000000e+00,-5.882679e-02,lc};
+Point(69) = {2.320875e-01,0.000000e+00,-5.841779e-02,lc};
+Point(70) = {2.189592e-01,0.000000e+00,-5.790876e-02,lc};
+Point(71) = {2.061082e-01,0.000000e+00,-5.729925e-02,lc};
+Point(72) = {1.935473e-01,0.000000e+00,-5.658907e-02,lc};
+Point(73) = {1.812888e-01,0.000000e+00,-5.577839e-02,lc};
+Point(74) = {1.693449e-01,0.000000e+00,-5.486767e-02,lc};
+Point(75) = {1.577273e-01,0.000000e+00,-5.385765e-02,lc};
+Point(76) = {1.464474e-01,0.000000e+00,-5.274938e-02,lc};
+Point(77) = {1.355165e-01,0.000000e+00,-5.154420e-02,lc};
+Point(78) = {1.249452e-01,0.000000e+00,-5.024372e-02,lc};
+Point(79) = {1.147441e-01,0.000000e+00,-4.884978e-02,lc};
+Point(80) = {1.049232e-01,0.000000e+00,-4.736451e-02,lc};
+Point(81) = {9.549212e-02,0.000000e+00,-4.579021e-02,lc};
+Point(82) = {8.646032e-02,0.000000e+00,-4.412942e-02,lc};
+Point(83) = {7.783660e-02,0.000000e+00,-4.238483e-02,lc};
+Point(84) = {6.962952e-02,0.000000e+00,-4.055926e-02,lc};
+Point(85) = {6.184718e-02,0.000000e+00,-3.865567e-02,lc};
+Point(86) = {5.449721e-02,0.000000e+00,-3.667711e-02,lc};
+Point(87) = {4.758692e-02,0.000000e+00,-3.462668e-02,lc};
+Point(88) = {4.112309e-02,0.000000e+00,-3.250752e-02,lc};
+Point(89) = {3.511214e-02,0.000000e+00,-3.032277e-02,lc};
+Point(90) = {2.955997e-02,0.000000e+00,-2.807550e-02,lc};
+Point(91) = {2.447206e-02,0.000000e+00,-2.576878e-02,lc};
+Point(92) = {1.985344e-02,0.000000e+00,-2.340553e-02,lc};
+Point(93) = {1.570869e-02,0.000000e+00,-2.098859e-02,lc};
+Point(94) = {1.204184e-02,0.000000e+00,-1.852062e-02,lc};
+Point(95) = {8.856565e-03,0.000000e+00,-1.600414e-02,lc};
+Point(96) = {6.155997e-03,0.000000e+00,-1.344148e-02,lc};
+Point(97) = {3.942788e-03,0.000000e+00,-1.083471e-02,lc};
+Point(98) = {2.219111e-03,0.000000e+00,-8.185687e-03,lc};
+Point(99) = {9.866953e-04,0.000000e+00,-5.496060e-03,lc};
+Point(100) = {2.467632e-04,0.000000e+00,-2.767267e-03,lc};
+Point(101) = {0.000000e+00,0.000000e+00,1.911503e-39,lc3};
+Point(102) = {2.467632e-04,0.000000e+00,2.767267e-03,lc};
+Point(103) = {9.866953e-04,0.000000e+00,5.496060e-03,lc};
+Point(104) = {2.219111e-03,0.000000e+00,8.185687e-03,lc};
+Point(105) = {3.942788e-03,0.000000e+00,1.083471e-02,lc};
+Point(106) = {6.155997e-03,0.000000e+00,1.344148e-02,lc};
+Point(107) = {8.856565e-03,0.000000e+00,1.600414e-02,lc};
+Point(108) = {1.204184e-02,0.000000e+00,1.852062e-02,lc};
+Point(109) = {1.570869e-02,0.000000e+00,2.098859e-02,lc};
+Point(110) = {1.985344e-02,0.000000e+00,2.340553e-02,lc};
+Point(111) = {2.447206e-02,0.000000e+00,2.576878e-02,lc};
+Point(112) = {2.955997e-02,0.000000e+00,2.807550e-02,lc};
+Point(113) = {3.511214e-02,0.000000e+00,3.032277e-02,lc};
+Point(114) = {4.112309e-02,0.000000e+00,3.250752e-02,lc};
+Point(115) = {4.758692e-02,0.000000e+00,3.462668e-02,lc};
+Point(116) = {5.449721e-02,0.000000e+00,3.667711e-02,lc};
+Point(117) = {6.184718e-02,0.000000e+00,3.865567e-02,lc};
+Point(118) = {6.962952e-02,0.000000e+00,4.055926e-02,lc};
+Point(119) = {7.783660e-02,0.000000e+00,4.238483e-02,lc};
+Point(120) = {8.646032e-02,0.000000e+00,4.412942e-02,lc};
+Point(121) = {9.549212e-02,0.000000e+00,4.579021e-02,lc};
+Point(122) = {1.049232e-01,0.000000e+00,4.736451e-02,lc};
+Point(123) = {1.147441e-01,0.000000e+00,4.884978e-02,lc};
+Point(124) = {1.249452e-01,0.000000e+00,5.024372e-02,lc};
+Point(125) = {1.355165e-01,0.000000e+00,5.154420e-02,lc};
+Point(126) = {1.464474e-01,0.000000e+00,5.274938e-02,lc};
+Point(127) = {1.577273e-01,0.000000e+00,5.385765e-02,lc};
+Point(128) = {1.693449e-01,0.000000e+00,5.486767e-02,lc};
+Point(129) = {1.812888e-01,0.000000e+00,5.577839e-02,lc};
+Point(130) = {1.935473e-01,0.000000e+00,5.658907e-02,lc};
+Point(131) = {2.061082e-01,0.000000e+00,5.729925e-02,lc};
+Point(132) = {2.189592e-01,0.000000e+00,5.790876e-02,lc};
+Point(133) = {2.320875e-01,0.000000e+00,5.841779e-02,lc};
+Point(134) = {2.454802e-01,0.000000e+00,5.882679e-02,lc};
+Point(135) = {2.591240e-01,0.000000e+00,5.913650e-02,lc};
+Point(136) = {2.730056e-01,0.000000e+00,5.934800e-02,lc};
+Point(137) = {2.871112e-01,0.000000e+00,5.946260e-02,lc};
+Point(138) = {3.014269e-01,0.000000e+00,5.948193e-02,lc};
+Point(139) = {3.159386e-01,0.000000e+00,5.940786e-02,lc};
+Point(140) = {3.306319e-01,0.000000e+00,5.924247e-02,lc};
+Point(141) = {3.454924e-01,0.000000e+00,5.898812e-02,lc};
+Point(142) = {3.605053e-01,0.000000e+00,5.864737e-02,lc};
+Point(143) = {3.756559e-01,0.000000e+00,5.822293e-02,lc};
+Point(144) = {3.909292e-01,0.000000e+00,5.771770e-02,lc};
+Point(145) = {4.063102e-01,0.000000e+00,5.713477e-02,lc};
+Point(146) = {4.217836e-01,0.000000e+00,5.647729e-02,lc};
+Point(147) = {4.373342e-01,0.000000e+00,5.574857e-02,lc};
+Point(148) = {4.529467e-01,0.000000e+00,5.495201e-02,lc};
+Point(149) = {4.686055e-01,0.000000e+00,5.409108e-02,lc};
+Point(150) = {4.842954e-01,0.000000e+00,5.316926e-02,lc};
+Point(151) = {5.000008e-01,0.000000e+00,5.219014e-02,lc};
+Point(152) = {5.157061e-01,0.000000e+00,5.115728e-02,lc};
+Point(153) = {5.313960e-01,0.000000e+00,5.007425e-02,lc};
+Point(154) = {5.470549e-01,0.000000e+00,4.894463e-02,lc};
+Point(155) = {5.626673e-01,0.000000e+00,4.777199e-02,lc};
+Point(156) = {5.782179e-01,0.000000e+00,4.655984e-02,lc};
+Point(157) = {5.936913e-01,0.000000e+00,4.531165e-02,lc};
+Point(158) = {6.090723e-01,0.000000e+00,4.403092e-02,lc};
+Point(159) = {6.243456e-01,0.000000e+00,4.272101e-02,lc};
+Point(160) = {6.394961e-01,0.000000e+00,4.138529e-02,lc};
+Point(161) = {6.545091e-01,0.000000e+00,4.002701e-02,lc};
+Point(162) = {6.693696e-01,0.000000e+00,3.864942e-02,lc};
+Point(163) = {6.840628e-01,0.000000e+00,3.725576e-02,lc};
+Point(164) = {6.985745e-01,0.000000e+00,3.584905e-02,lc};
+Point(165) = {7.128901e-01,0.000000e+00,3.443245e-02,lc};
+Point(166) = {7.269957e-01,0.000000e+00,3.300894e-02,lc};
+Point(167) = {7.408773e-01,0.000000e+00,3.158154e-02,lc};
+Point(168) = {7.545212e-01,0.000000e+00,3.015313e-02,lc};
+Point(169) = {7.679139e-01,0.000000e+00,2.872668e-02,lc};
+Point(170) = {7.810421e-01,0.000000e+00,2.730503e-02,lc};
+Point(171) = {7.938930e-01,0.000000e+00,2.589105e-02,lc};
+Point(172) = {8.064539e-01,0.000000e+00,2.448751e-02,lc};
+Point(173) = {8.187124e-01,0.000000e+00,2.309725e-02,lc};
+Point(174) = {8.306563e-01,0.000000e+00,2.172309e-02,lc};
+Point(175) = {8.422739e-01,0.000000e+00,2.036772e-02,lc};
+Point(176) = {8.535537e-01,0.000000e+00,1.903398e-02,lc};
+Point(177) = {8.644845e-01,0.000000e+00,1.772453e-02,lc};
+Point(178) = {8.750558e-01,0.000000e+00,1.644214e-02,lc};
+Point(179) = {8.852569e-01,0.000000e+00,1.518951e-02,lc};
+Point(180) = {8.950777e-01,0.000000e+00,1.396934e-02,lc};
+Point(181) = {9.045087e-01,0.000000e+00,1.278429e-02,lc};
+Point(182) = {9.135405e-01,0.000000e+00,1.163695e-02,lc};
+Point(183) = {9.221641e-01,0.000000e+00,1.052998e-02,lc};
+Point(184) = {9.303712e-01,0.000000e+00,9.465891e-03,lc};
+Point(185) = {9.381535e-01,0.000000e+00,8.447210e-03,lc};
+Point(186) = {9.455034e-01,0.000000e+00,7.476377e-03,lc};
+Point(187) = {9.524136e-01,0.000000e+00,6.555737e-03,lc};
+Point(188) = {9.588774e-01,0.000000e+00,5.687566e-03,lc};
+Point(189) = {9.648883e-01,0.000000e+00,4.874101e-03,lc};
+Point(190) = {9.704404e-01,0.000000e+00,4.117359e-03,lc};
+Point(191) = {9.755284e-01,0.000000e+00,3.419365e-03,lc};
+Point(192) = {9.801469e-01,0.000000e+00,2.781989e-03,lc};
+Point(193) = {9.842916e-01,0.000000e+00,2.206860e-03,lc};
+Point(194) = {9.879584e-01,0.000000e+00,1.695579e-03,lc};
+Point(195) = {9.911436e-01,0.000000e+00,1.249551e-03,lc};
+Point(196) = {9.938442e-01,0.000000e+00,8.699747e-04,lc};
+Point(197) = {9.960575e-01,0.000000e+00,5.579769e-04,lc};
+Point(198) = {9.977810e-01,0.000000e+00,3.143904e-04,lc};
+Point(199) = {9.990134e-01,0.000000e+00,1.398841e-04,lc};
+Point(200) = {9.997533e-01,0.000000e+00,3.498543e-05,lc};
+
+Spline(1) = { 1 ... 50};
+Spline(2) = { 50 ... 101};
+Spline(3) = { 101 ... 151};
+Spline(4) = { 151 ... 200,1};
+
+Rotate { {1,0,0},{0,0,0},Pi/2 } { Line{1,2,3,4}; }
+Translate {-0.5,0,0} { Line{1,2,3,4}; }
+
+d=4;
+Point(1000) = {d,d,0,lc2};
+Point(1001) = {-d,d,0,lc2};
+Point(1002) = {-d,-d,0,lc2};
+Point(1003) = {d,-d,0,lc2};
+Line(5) = {1000,1001};
+Line(6) = {1001,1002};
+Line(7) = {1002,1003};
+Line(8) = {1003,1000};
+
+Line Loop(9) = {6,7,8,5};
+Line Loop(10) = {2,3,4,1};
+Plane Surface(11) = {9,10};
+//Recombine Surface {11};
+Field[2] = BoundaryLayer;
+Field[2].EdgesList = {1,2,3,4};
+Field[2].hfar = 1.5;
+Field[2].hwall_n = 0.0008;
+Field[2].ratio = 1.2;
+Field[2].thickness = .03;
+Field[2].IntersectMetrics = 1;
+Field[2].Quads = 1;
+Field[2].FanNodesList = {1};
+BoundaryLayer Field = 2;
+
+N = 10;
+For i In {0:N}
+  e[i] = 1;
+  h[i] = 0.5^(N-i);
+EndFor
+Printf("h=",h[]);
+
+Extrude {0,0,1}{ Surface{11}; Layers{ e[], h[] }; Recombine; }
diff --git a/benchmarks/misc/lists2.geo b/benchmarks/misc/lists2.geo
new file mode 100644
index 0000000000000000000000000000000000000000..ea4110b434a232c94190a1ee22eb104e96097a50
--- /dev/null
+++ b/benchmarks/misc/lists2.geo
@@ -0,0 +1,11 @@
+a1 = {1,2,3};
+a2() = {1,2,3};
+a3[] = {1,2,3};
+
+//a1++; // error
+a1 += 1;
+a1() += 1;
+a1(1) += 1;
+a1[] += 1;
+a1[1] += 1;
+a1[{1,2}] += {1,2};
diff --git a/benchmarks/misc/lists3.geo b/benchmarks/misc/lists3.geo
new file mode 100644
index 0000000000000000000000000000000000000000..ef0a7d2c6bebf323874d1e24979c50c7d77063c0
--- /dev/null
+++ b/benchmarks/misc/lists3.geo
@@ -0,0 +1,14 @@
+aa[] = {10,2,3};
+
+bb1[] = List[aa];
+bb2[] = List[aa[]];
+bb3[] = List[{1,2,4}];
+
+Printf("", bb1[]);
+Printf("", bb2[]);
+Printf("", bb3[]);
+
+DefineConstant[
+  ll[] = {bb1[], Name "my list"}
+];
+Printf("my list = ", ll[]);
diff --git a/benchmarks/misc/widgets.geo b/benchmarks/misc/widgets.geo
new file mode 100644
index 0000000000000000000000000000000000000000..e89fa37d3930629113c3e85027853863550938c5
--- /dev/null
+++ b/benchmarks/misc/widgets.geo
@@ -0,0 +1,94 @@
+Merge "tutorial/t1.geo";
+Merge "tutorial/view1.pos";
+
+DefineConstant
+[
+ m1 = {"script_convert_to_mm.geo", Name "Actions/Set views in mm",
+   Macro "GmshMergeFile", AutoCheck 0}
+ m2 = {"script_convert_to_m.geo", Name "Actions/Set views in m",
+   Macro "GmshMergeFile", AutoCheck 0}
+ m3 = {"script_show_lines.geo", Name "Actions/Toogle line display",
+   Macro "GmshMergeFile", AutoCheck 0, Highlight "Pink"}
+ m4 = {"script_mesh_model.geo", Name "Actions/Mesh model",
+   Macro "GmshMergeFile", AutoCheck 0}
+ m5 = {"script_save_mesh.geo", Name "Actions/Save mesh",
+   Macro "GmshMergeFile", AutoCheck 0}
+ m6 = {"script_save_as_png.geo", Name "Actions/Save as PNG",
+       Macro "GmshMergeFile", AutoCheck 0},
+
+ m61 = {"Printf('hello I just parsed the Print command');", Name "Parse a command directly!",
+        Macro "GmshParseString", AutoCheck 0},
+
+ m62 = {"Printf('hello I just resetted the DB');", Name "Reset the DataBase!",
+        Macro "GmshParseString", GmshOption "ResetDatabase", Highlight "Red", AutoCheck 0},
+
+ m71 = {Mesh.NbTriangles, Name "Nb triangles",
+   ReadOnly 1 },
+
+ m7 = {Geometry.Lines, Name "Options/Show lines?", Choices {0,1},
+   GmshOption "Geometry.Lines", AutoCheck 0, Highlight "Pink"}
+ m8 = {Geometry.LineNumbers, Name "Options/Show line numbers?", Choices {0,1},
+   GmshOption "Geometry.LineNumbers", AutoCheck 0}
+ m9 = {Geometry.LineWidth, Name "Options/Line Width", Min 0.1, Max 7, Step 0.5,
+       GmshOption "Geometry.LineWidth", AutoCheck 0, Highlight "LightGreen"}
+ m9b = {Mesh.PointNumbers, Name "Options/Mesh point numbers", Choices{0,1},
+        GmshOption "Mesh.PointNumbers", AutoCheck 0, Highlight "LightGreen"}
+
+ n0 = {3,
+   Name "Test widgets/Numbers/Number"}
+ n01 = {3, Min 1, Max 4, Step 1,
+   Name "Test widgets/Numbers/Number (with range and loop 1 selected)", Loop 1}
+ n1 = {3, ReadOnly 1,
+   Name "Test widgets/Numbers/Number (read only)"}
+ n12 = {3, ReadOnlyRange 1, Min 1, Max 4, Step 1,
+   Name "Test widgets/Numbers/Number (read only range)"}
+ n2 = {3, Choices{1, 2, 3, 4},
+   Name "Test widgets/Numbers/Number (with choices)"}
+ n3 = {1, Choices{0,1},
+   Name "Test widgets/Numbers/Number (with binary choice) - Show String Options?"},
+ n4 = {1, Choices{0,1},
+   Name "Test widgets/Numbers/Number (with binary choice) (read only)", ReadOnly 1},
+ n5 = {3, Choices{1 = "One",
+     2 = "Two",
+     3 = "Three",
+     4 = "Go!!"},
+   Name "Test widgets/Numbers/Number (with enumeration)"},
+ n6 = {1, Choices{1 = StrChoice(n5 == 3, "One when n5 is 3", "One"),
+     2 = "Two",
+     3 = "Three",
+     4 = "Go!!"},
+   Name "Test widgets/Numbers/Number (with enumeration) (read only range)", ReadOnlyRange 1}
+ n7 = {1, Choices{1 = "One",
+     2 = "Two",
+     3 = "Three",
+     4 = "Go!!"},
+   Name "Test widgets/Numbers/Number (with enumeration) (read only)", ReadOnly 1}
+];
+
+If(n3) // test define/undefine
+  DefineConstant[
+    s0 = {"a",
+      Name "Test widgets/Strings/String"}
+    s1 = {"a", ReadOnly 1,
+      Name "Test widgets/Strings/String (read only)"}
+    s2 = {"a", Choices {"a","b","c"},
+      Name "Test widgets/Strings/String with choices"}
+    s20 = {"a, c", Choices {"a","b","c"}, MultipleSelection "101",
+      Name "Test widgets/Strings/String with multiple selection"}
+    s3 = {"a.txt", Choices{"a.txt","b.txt","c.txt"}, Kind "file",
+      Name "Test widgets/Strings/File"}
+    s4 = {"a.txt", Kind "file", Macro "GmshMergeFile",
+      Name "Test widgets/Strings/Macro"}
+  ];
+EndIf
+If(!n3)
+  UndefineConstant[ "Test widgets/Strings/s0",
+    "Test widgets/Strings/s1",
+    "Test widgets/Strings/s2",
+    "Test widgets/Strings/s20",
+    "Test widgets/Strings/s3",
+    "Test widgets/Strings/s4"];
+EndIf
+
+pp1 = DefineNumber[0.1, Name "Inline definitions/number"];
+ss1 = DefineString["my string", Name "Inline definitions/string"];
diff --git a/utils/misc/gource.sh b/utils/misc/gource.sh
new file mode 100755
index 0000000000000000000000000000000000000000..83967f90b66a0e88f214e1f0dbe4b8407dc9ad31
--- /dev/null
+++ b/utils/misc/gource.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+### -f --start-date '2006-01-01'
+
+gource -f --time-scale 2 -b 000000 --seconds-per-day 0.0001 --hide filenames --file-filter projects --file-filter data --file-filter branches --file-filter benchmarks_private --file-filter benchmarks_kst --highlight-user geuzaine -1280x720 -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 gource.mp4