forked from chapel-lang/chapel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
STATUS.devel
900 lines (849 loc) · 41.7 KB
/
STATUS.devel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
#
# This file lists all the existing futures that are categorizes as "bug" or
# "unimplemented feature."
#
# All comments will be stripped out before releasing the final STATUS
#
# To remove comments use: grep -v "^\ *#" STATUS.devel (or 'make STATUS')
#
# To further facilitate generating the final STATUS file, please put the
# names of the future files on a separate line from comments (one future
# per line). For example:
#
# # path/to/future/blah.future
#
# If for some reason a .future is omitted prepend the name of the future
# with the 'OMITTED:' and use comments to explain. For example:
#
# # OMITTED: path/to/future/blah.future
# # b/c it's too difficult to explain
#
#
============================
Chapel Implementation Status
============================
This file contains a list of unimplemented features and known bugs in
the Chapel implementation. If you find additional bugs and
unimplemented features, or if you would like to request prioritization
of items in this file, please let us know at
https://chapel-lang.org/bugs.html or chapel_info@cray.com. Please
feel encouraged to err on the side of mailing us with any issues you
run into.
# OMITTED: functions/vass/resolution/need-ambiguous-error-1.future
# b/c it seems a little obscure (it'd be nice to see an example with a non-standard module function)
#
# OMITTED: users/vass/crash1callDestructorsMain.future
# b/c not investigated
#
# OMITTED: users/csep524/userDefReduceSlim.future
# b/c multiple errors in the user code and hard to quantify what is wrong
#
# OMITTED: users/npadmana/fftw/testFFTWsegfault.future
# b/c not investigated or diagnosed
#
# OMITTED: functions/deitz/iterators/iterator_uses_setter.future
# b/c 'setter' has been removed from the language and it's unclear if this test
# can be updated
#
General (see also portability section at the bottom of this file)
-----------------------------------------------------------------
- Some error messages are confusing or unhelpful. If needed, please
ask us for help with interpreting the message.
# compflags/bradc/badConfigParamOverride.future
# sparse/bradc/accumInds-forexpr.future
# functions/vass/resolution/need-missing-return-error-2.future
# types/scalar/bradc/index-int.future
# users/rohanbadlani/bugs/bug1.future
- Compiler and runtime and errors may report incorrect line numbers,
may not be formatted correctly, or may be garbled. If needed,
please ask us for help finding the line in question.
# parsing/vass/newline-in-string-compiletime-1.future
- Errors in unused code may not be reported by the compiler
# users/kreider/feature_unusedcode.future
- Names in a Chapel program can collide with names used internally.
# modules/hilde/Writer.future
# types/records/sungeun/chapelTypes/record_array.future
# extern/vass/c_sublocid_any.inner-extern.future
- There are several internal memory leaks
- Privatized domains and arrays (i.e., those that use the standard
distributions) are leaked
- Non-default domain maps may be leaked
- Data associated with iterators may be leaked
- Records with generic fields may be leaked
# types/records/ferguson/leak-futures/iterate-loop-break.future
# types/records/ferguson/leak-futures/iterate-loop-break2.future
# types/records/ferguson/leak-futures/iterate-twice-break.future
# types/records/ferguson/leak-futures/record-in-record-generic.future
# arrays/ferguson/semantic-examples/4-init-class-field.future
# arrays/ferguson/semantic-examples/4-init-record-field.future
- Separate compilation of Chapel files is not supported.
# separate_compilation/jturner/array.future
# separate_compilation/jturner/use_array.future
# separate_compilation/jturner/use_classextern.future
# separate_compilation/jturner/use_classextern2.future
# separate_compilation/jturner/use_fcfunc.future
# separate_compilation/jturner/use_methodextern.future
# separate_compilation/jturner/use_methodextern2.future
# separate_compilation/jturner/use_overload.future
# separate_compilation/jturner/use_record.future
# separate_compilation/jturner/use_simplefloat.future
# separate_compilation/jturner/use_subclass.future
- Back-end compilers may emit warning messages.
- The --gdb flag is only supported for single-locale platforms that
support gdb. Please ask us for help if you want to debug a
multilocale program.
Types, Params, Variables, and Consts
------------------------------------
- The default value for the locale type is incorrect.
# types/locale/bradc/defaultLocaleVal.future
# multilocale/sungeun/locale_default.future
- Type inferred for a variable initialized to 'nil' is not 'object'
# classes/deitz/class/infer_nil.future
- Multiple configuration parameters with different types declared in a
single statement result in an internal compiler error.
# functions/bradc/paramFnNonParamArgs/multConfigTypes.future
- When setting a config variable that shares an initializer on the
command line, the new value is incorrectly propagated to the other
variables.
# execflags/bradc/configShareInit.future
- When setting a boolean config variable on the command line, using a
space as the delimiter results in an "Unexpected flag" error.
# execflags/thomasvandoren/configVarBooleanSpaceAfter.future
- When setting an integral config variable on the command line, only
base 10 values are supported.
# execflags/tmacd/config_num.future
- Some assignments to ref variables can cause an internal compiler error.
# variables/sungeun/refvar-assign-with-cast.future
# variables/vass/ref-to-const-domain.future
- Using an if-expression as the left-hand side of an assignment may not work.
# expressions/ferguson/if-expr/ifi.future
- Taking a reference of an array formal argument causes a const checking error.
# arrays/bradc/refArray2.future
- Variables that rely on each other for initialization
and/or type inference may result in an internal compiler error.
# functions/deitz/test_outoforder.future
- Constant checking is incomplete.
# domains/bradc/assignConstDom2.future
# domains/bradc/assignConstDom.future
# types/records/const-checking/todo-multiple-asgn-errors.future
- Attempting to instantiate a generic class in a type alias context results
in an unresolved call error.
# functions/vass/param-formal-in-ctor.future
- Type aliases and enum declarations cannot be declared private/public.
# visibility/private/typeAlias.future
# visibility/private/privateEnum.future
- Defining a method on a type alias is not supported.
# users/ferguson/type-alias-method.future
- Implicit `this` not working for method on specific instantiation;
explicitly writing e.g. `this.field` may be required.
# functions/ferguson/spec-insn-method-no-this.future
Conversions
-----------
- Casts to non-type variables do not result in an error at compile time.
# expressions/vass/cast-to-non-type-1.future
# expressions/vass/cast-to-non-type-2.future
- Integer to c_string cast promotes from int to real before cast is performed
# types/string/thomasvandoren/int-to-c_string.future
- Casting from string to uint(32) clips result to 31 bits on 32 bit platforms
# types/string/cassella/cast-biggish-uint32-through-string.future
Statements and Expressions
--------------------------
- Continue statements in forall and coforall statements not implemented.
# statements/diten/continueInForall.future
# statements/sungeun/continue_coforall_label.future
# statements/sungeun/continue_forall_label.future
- On statement variable declarations are not yet supported.
E.g., on Locales(1) var x: real;
# multilocale/sungeun/on_statement_var_decl.future
- The local statement is not well supported. For example, declaring
domains (whether explicitly via a declaration or implicitly via
slicing) results in a runtime seg fault or non-local access error.
Also, on statements in local blocks should be illegal, but result in
local execution.
# multilocale/local/sungeun/local_privatization.future
# users/jglewis/locClassSegFault.future
- Nested for expressions can cause runtime failure
# expressions/diten/forExprs.future
- Using domain extraction syntax inside a variable declaration causes
compiler failure instead of a clean error
# users/bguarraci/domain_extraction.future
Modules
-------
# OMITTED: modules/sungeun/resolution/module-resolution-issue.future
# b/c I'm not able to describe it concisely
- Modules that rely on each other for initialization and/or type
inference may result in an internal compiler error.
# functions/bradc/resolveConfig.future
# modules/deitz/test_module_mutual_use.future
# modules/diten/mutualuse.future
# modules/diten/mutualuse2.future
# modules/diten/mutualuse3.future
- User modules named the same as types defined internal/standard modules
can cause multiple definition errors.
# modules/lydia/object.future
# modules/lydia/object2.future
- Modules that use another module that uses a begin statement in its
initialization result in an internal compiler error.
# parallel/begin/vass/begin-in-module-init.future
- Constructor calls with the same name in different modules are not
properly resolved.
# trivial/jturner/module_class_name_clash.future
- Cannot call new for or declare a variable for a type defined in another
module without explicitly using the module.
# users/ferguson/module_new.future
# modules/sungeun/no-use-record.future
- If multiple modules with the same name define 'main' and the '--main-module'
flag is used, there is an internal error.
# modules/cassella/ambigmodmain.future
# modules/cassella/ambigmodmain.unnested.future
# modules/cassella/ambigmodmain.unnested2.future
- Secondary methods are not handled properly within 'only' lists in 'use'
statements.
# visibility/only/canSeeSecondaryMethod.future
Functions and Iterators
-----------------------
- Invalid where clauses may result in an internal compiler error.
# functions/bradc/resolution/uintParamInWhere.future
- Querying the type of a function is not supported and currently
returns an internal type.
# functions/sungeun/type_illegal.future
- Default values for formal arguments do not accept conditional
expressions.
# functions/deitz/default/test_default_conditional_expr.future
- Specified argument types that are not types should return a Chapel
compile time error, but instead they may result in an internal
compiler error or compile and run.
# functions/deitz/test_arg_type_is_value_error.future
# functions/vass/return-type-function-failure.future
- Formal arguments that depend on preceeding vararg arguments fail to compile
# functions/nspark/generic-varargs2.future
- Array-of-array formal argument declarations do not work.
# arrays/bradc/arrayOfArrayArg.future
- Returning arrays from getter/setter functions always uses the setter version
# functions/bharshbarg/arr-ref-return.future
- Function argument with type tuple of generic class results in a
compiler assertion.
# functions/diten/fnGenericTupleArg.future
# functions/vass/arg-is-tuple-with-generic-class.future
- Actual arguments for formals with out intent do not follow implicit
conversion rules and must match exactly in type.
# functions/vass/out-intent-desired.future
- Sync and single vars incorrectly passed to generic ref or const intent
arguments.
# types/sync/vass/ref-sync-2.future
- Sync and single variables in records are not properly copied out
when the record is passed as an out or inout argument.
# types/single/sungeun/writeRecordInOutProc.future
- Parentheses-less function without curly braces enclosing the body
fail to parse correctly.
# parsing/vass/parenthesis-less-function-string.future
- Recursive functions that return arrays are not yet supported
# functions/dinan/array_return_from_recursive.future
- Type and parameter functions are not checked for side effects.
- Ref functions returning multiple class types should be illegal, but
instead they are compiled and result in runtime error.
# functions/diten/varFnRetClasses.future
# functions/diten/varFnRetClasses2.future
- Ref functions that return local data may not result in an error.
# functions/deitz/test_var_function_returns_local_via_var_function.future
- Ref functions that return fields from a record argument passed by
blank intent may produce incorrect results.
# optimizations/copyPropagation/cp-problem1.future
- Type functions with unambiguous return paths may result in "illegal
cast" errors.
# users/weili/typefnbug.future
# This should be updated when someone knows a little more
# about what exactly is going on
- Support for closures and first-class functions is not complete.
# functions/jturner/first-class-generic-function.future
# functions/vass/closure-outlives-captured-vars.future
- Recursive iterators may not work correctly.
# functions/iterators/vass/recursive-iterator-in-expr-context.future
# studies/madness/aniruddha/madchap/recordBug/test_likepy.future
- Parallel recursive iterators are not supported.
# functions/iterators/tzakian/par_iter_recursive.future
- Iterators in records cannot change fields in that record.
# functions/deitz/iterators/test_record_iterator.future
- Iterators with reference variables cause program to crash at runtime
when compiled with the --baseline flag.
# studies/shootout/nbody/sidelnik/nbody_iterator_7-refInIterator.future
- Const checking is incorrect for standalone iterator index variables
# performance/vectorization/vectorizeOnly/constChecking/standaloneConstChecking.future
# statements/elliot/loops/modifyIndicesStandalone.future
- Ref iterators yielding records may introduce uninitialized values
# types/records/ferguson/parallel/coforall-mod/coforall-mod.future
- Passing unexpected argument to default 'these' iterator causes internal error
# users/rohanbadlani/bugs/bug3.future
- The ref version of a ref/val function pair is sometimes chosen when the val
version would be better.
# functions/vass/setter-passed-to-another-fun.future
# functions/deitz/iterators/test_promote_var_function_and_iterate.future
- A forall loop with an iteratable expression that does not provide
leader/follower iterators cause an internal compiler error.
# functions/iterators/vass/forall-without-leaderfollower.future
- Function return point analysis is conservative.
# functions/deitz/test_return1.future
# trivial/preston/gcd.future
- Missing function body at declaration results in an internal compiler
error.
# functions/lydia/syntax-error-unclear-message.future
# functions/lydia/syntax-error-unclear-message2.future
- Function arguments of type 'const ref' should be allowed to have
default values.
# functions/sungeun/const_ref_arg_default_value.future
- Formal argument intents on 'this' can result in incorrect function resolution
or errors.
# functions/bradc/paramThis/funParamThis3.future
Strings
-------
- String assignment across locales is sometimes by reference and
sometimes by value.
# distributions/bradc/block1Dlocale.future
- Casting from complex to string mishandles -0.0i
# types/complex/diten/complexCastToString.future
- Casting a sync type to string results in an internal representation of
the type instead of a clean, user-facing representation.
# types/sync/vass/sync-type-1.future
- Implicit conversion of a param c_string to string does not work.
# types/string/diten/c_stringParamInfer.future
- c_string variable are sometimes copied to remote locales.
# types/string/sungeun/c_string/multilocale/remote_assign_c_string.future
# types/string/sungeun/c_string/multilocale/remote_assign_global_c_string.future
- Changes to a string used in a begin statement are not visible from
the begin body.
# types/string/sungeun/stringInBegin.future
- Global constant strings are not replicated across locales
# multilocale/bradc/stringConstRepl.future
Tuples
------
- Specifying the type of a tuple of domains or arrays results in a
runtime error (nil dereference). It may be possible to work around
this by implicitly specifying the type by using an assignment at the
declaration.
# types/tuple/sungeun/hetTupleWithArray.future
# types/tuple/sungeun/hetTupleWithArrayInitWithType.future
# types/tuple/sungeun/hetTupleWithDomain.future
# types/tuple/sungeun/hetTupleWithDomainInitWithType.future
# types/tuple/sungeun/homTupleOfArrays.future
# types/tuple/sungeun/homTupleOfDomains.future
# types/tuple/claridge/tuple_of_domains.future
# arrays/vass/tuple-with-array-1.future
- Invalid use of tuple expansion as an expression results in the
expression evaluating to the first element of the tuple.
# functions/vass/return-of-tuple-expansion-1.future
# types/tuple/vass/tuple-expansion-with-parens-1.future
- Tuple expanded list enclosed in parenthesis does not result in a
tuple.
# functions/vass/return-of-tuple-expansion-2.future
- Cannot iterate over heterogeneous tuples
# types/tuple/sungeun/iteration/heteroTupleOfArrays.future
# types/tuple/sungeun/iteration/heteroTupleOfDomains.future
# types/tuple/sungeun/iteration/heteroTupleOfRanges.future
- Cannot iterate over a tuple of iteratable expressions (e.g.,
iterators).
# types/tuple/sungeun/iteration/iteratable.future
- Reference tuples do not work.
# variables/kbrady/ref-in-tuple.future
# reductions/thomasvandoren/test/TestMini.future
- References cannot be members of classes or records.
# variables/kbrady/ref-member.future
Ranges
------
- Range operations can result in overflow.
e.g., (0:uint..5 by -1).length
# arrays/elliot/maximalUintArray.future
# types/range/sungeun/length_broken.future
- Ranges that span the entire representable range of the index type
do not work.
# types/range/hilde/noCountBigUint.future
- Range alignment is not always displayed when printing a range using
writeln().
# types/range/vass/writeranges-1.future
- The indexOrder() method on ranges does not work if the unbounded on
the 'low' end.
# types/range/vass/indexorder-nofirst-1.future
# types/range/vass/indexorder-nofirst-2.future
- Param ranges are not supported.
# users/sidelnik/param_range.future
- Range internals (bounds, stride, and alignment) are not checked for
overflow when being manipulated.
# types/range/hilde/needRangeCountType.future
# types/range/hilde/countError.future
# types/scalar/hilde/absMinInt.future
Classes, Records, and Unions
----------------------------
- Generic domain types in field declarations result in a compile time
error.
# domains/vass/generic-domain-field.future
- Generic types in default value for type fields result in a compile time error
# functions/typeMethods/genericRecordTypeMethod.future
# users/ferguson/generic_type_method.future
- Record and class members that are defined to be array aliases fail
to compile without an explicitly specified element type.
# classes/stonea/arrayAliasRecordMember.future
# studies/hpcc/HPL/stonea/serial/hplExample1.future
- Multiple inheritance as defined in the spec (single base class with
fields) is not implemented.
# classes/figueroa/DestructorSubclassing2.future
# classes/figueroa/DestructorSubclassing3.future
- Records returned from functions are destructed incorrectly.
# types/records/kbrady/return-record.future
- User-defined initializers/constructors and destructors are not robust.
# users/murai/test_nested_class_constructor.future
# classes/bradc/initialize-secondary.future
# classes/vass/nested-class-with-user-defined-constructor-1.future
# classes/initializers/nested-class-with-user-defined-initializer-1.future
# classes/initializers/noReturnInInit.future
# classes/initializers/assign-param-segfault.future
- Copy constructors are not properly implemented.
# types/records/ferguson/missing-auto-copy.future
# types/records/sungeun/constructor2.future
# users/vass/km/array-of-records-crash-1.explicit-type.future
# users/vass/km/array-of-records-crash-1.future
# functions/ferguson/ref-return-intent6.future
- Generic methods called with param actuals may result in "unresolved
call" error at compile time or incorrect generated code.
# classes/vass/generic-method-with-param-arg-1.future
# classes/vass/generic-method-with-param-arg-2.future
# classes/vass/generic-method-with-param-arg-3.future
- Function resolution may be overly conservative for methods of subclasses.
# classes/bradc/compilerErrorInMethod/testClear.future
# classes/diten/subclassMethodCall.future
- Cannot call a standalone function from a class method of the same name
# functions/lydia/method-iter-resolution-bug.future
- Declaring class members using type aliases may result in unresolved
type errors.
# arrays/deitz/part5/test_array_type_field_type.future
# classes/diten/type_order_problem.future
# types/records/bharshbarger/nestedRecordInClass2.future
- Ambiguous definitions of class methods that are overridden in a
subclass result in an internal compiler error.
# classes/vass/duplicate-virtual-method-error-2.future
- Classes or records nested in procedures or iterators may result in a
compile time error.
# classes/vass/jglewis-class-in-function.future
# users/ferguson/record-in-iterator.future
# users/ferguson/inner-record-generic.future
- Non-sync arguments to default initializers/constructors that expect
sync vars are not properly coerced to sync type.
# classes/hannah/coercingIntToSyncIntOnConstructor.future
# classes/initializers/coercingIntToSyncIntOnInitializer.future
- Assigning to param class members from constructors may fail to compile
# classes/constructors/assign-param-segfault.future
- Implicit casting of record parameters not implemented.
# users/ferguson/recordEquivalence.future
- Atomic operations don't promote cleanly to whole arrays
# types/atomic/albrecht/arrayatomics.future
- Using a comparison operator with a record and 'nil' results in an
internal compiler error.
# types/records/sungeun/recordNotNil1.future
# types/records/sungeun/recordNotNil2.future
- Records inheritance does not properly expose parent methods.
# types/records/vass/method-of-parent-record-1.future
- Nested classes and records can result in multiple destructor calls
# classes/constructors/nested-destructor.future
# classes/initializers/nested-destructor.future
- Nested record inheritance results in a compilation error.
# types/records/vass/nested-record-with-outer-1.future
- Nested record constructor should not need an explicit generic outer
# users/bguarraci/nested_record.future
- Nested records as fields in outer classes/records is not robust
# types/records/engin/fieldOfOuter.future
# types/records/engin/nestedRecordField.future
- Unused records defined in procedures result in an internal compiler error.
# types/records/vass/unused-decl-in-proc-1.future
# types/records/vass/unused-decl-in-proc-2.future
- Recursive records result in function resolution error or internal
compiler error.
# types/records/sungeun/recursiveRecord.future
# arrays/dinan/array_of_records.future
- Classes arguments passed to out, inout, and ref intent formals
result in a compiler internal error.
# classes/vass/ref-like-intents/inout-subclass.future
# classes/vass/ref-like-intents/out-subclass.future
# classes/vass/ref-like-intents/ref-subclass.future
- Specifying the type when declaring a record variable with const
fields results in a compile time errors regarding assigning to const
fields.
# types/records/const-checking/todo-initializing-typed-var.future
- Default arrays of records with const fields result in compile time
errors regarding assigning to const fields.
# types/records/const-checking/scenario-1-array-of-record-with-const-fld.future
# types/records/const-checking/scenario-2-init-array-of-rec-with-const-fld.future
# types/records/const-checking/todo-constructors-for-const-rec-fields.future
- Associative domains and arrays of records with const fields result
in compile time errors regarding assigning to const fields.
# types/records/const-checking/scenario-3-assoc-dom-of-record-with-const-fld.future
- Comparison (== or !=) of records with array or domain fields result
in a back-end C compiler error.
# types/records/bharshbarger/recordArrCmp.future
# types/records/bharshbarger/recordDomArrCmp.future
- There's no way to determine which field of a union is "active".
- Setting union field from constructor doesn't work
# classes/diten/constructUnion.future
Domain Maps, Domains and Arrays
-------------------------------
- Reference counting (used for memory management of domain maps,
domains, and arrays) may contain bugs.
# arrays/diten/replaceArrayAccess/arrayAlias2.future
# distributions/vass/dmap-var-decl.future
# studies/graph500/v1/main.future
# studies/hpcc/HPL/vass/bug.future
- The default domain map is currently a single type for all default domains
# distributions/bradc/layoutEquality.future
- Assignment from a distributed domain to a non-distributed domain causes
a runtime error.
# distributions/kushal/assignDomain.future
- Assignment to domain maps with declared domains not supported for
all domain map types.
# distributions/deitz/test_distribution_syntax2.future
- PrivateDist must be used at the top-level scope.
# distributions/sungeun/misc/useDummyDist.future
- Subset checks on subdomains is not implemented.
- Bounds checks are not implemented for block-cyclic array slices
# distributions/bradc/blkCyc/blkCycSliceOOB.future
- Bounds checks on index types is not implemented.
- Concurrent slicing of privatized Replicated arrays dereferences nil
# distributions/dm/hplx.future
- Query expressions on domains and subdomains not supported.
# domains/vass/domain-arg-query-expr.future
# functions/vass/arg-is-queried-domain.future
- Arrays of arrays where the inner arrays vary in size are not supported.
# arrays/deitz/test_skyline_array.future
# studies/590o/wk3/02arrOfArr-irregular.future
- Array of array procedure arguments may cause compile time errors
# users/kreider/bug_array_of_arrays.future
- Array values are permitted to be detupled in an iterator
# functions/iterators/bradc/badzip/misZipArrays.future
- Arrays of subdomains may not work.
# users/jglewis/bfs_102207/driver_breadth_first_search.future
- Indexing of array literals may be mis-parsed.
# arrays/vass/literal-indexing.future
- Arrays declared over domains with negative strides may result in errors.
# users/weili/arrNegDom-blc.future
# users/weili/arrNegDom2.future
# users/weili/arrNegDom3.future
- Array and domain runtime type information is not preserved through
generic instantiation.
# arrays/vass/initialization-mapped-1.future
- Modifications to Sparse domains are not thread-safe.
# domains/sungeun/sparse/forall.future
# domains/sungeun/sparse/stress.future
- Sparse domain/array slicing is not supported.
# arrays/stonea/sliceSparseSubdomain.future
# sparse/bradc/sliceWithDense.future
- Sparse arrays of arrays can halt when reading values that were not added
# functions/bharshbarg/sparse-ref-return.future
- Associative arrays of arrays can add new array elements by reading
empty positions
# functions/bharshbarg/assoc-ref-return.future
- Associative domain/array slicing is not supported.
# users/ferguson/assoc-slice.future
- Associative domain clear() does not reset values of arrays declared
over the domain.
# domains/sungeun/assoc/clear.future
- Associative domains with array or domain index types do not work.
# domains/sungeun/assoc/arrayIdxType.future
# domains/sungeun/assoc/assocArrayIdxType.future
# domains/sungeun/assoc/assocDomainIdxType.future
# domains/sungeun/assoc/domainIdxType.future
# domains/claridge/domainOfDomains.future
# puzzles/deitz/puzzle080117.future
- Associative domain literal syntax with a single domain index in
initializer drops the extra {} and becomes the same as the single
domain.
# domains/sungeun/assoc/literalSingleAssocDomain.future
# domains/sungeun/assoc/literalSingleDomain.future
- Associative arrays with associative array element types result in a
runtime error.
# arrays/johnk/associative/recursive.future
- Returning a runtime type computed from a local variable does not work
# types/type_variables/ferguson/returning-runtime-type-from-local.future
- Array type expressions evaluate the domain portion twice
# types/type_variables/ferguson/runtime-type-call-print.future
- Slicing a dimensional array with a different type of domain fails
# distributions/dm/sx8.future
Task Parallelism and Synchronization
------------------------------------
- Atomic statements are not implemented.
- Remove value forwarding does not respect the memory order imposed by
atomic variables.
# parallel/begin/deitz/test_begin_cobegin1_atomic.future
- Deadlock may occur due to an insufficient number of threads.
# multilocale/deitz/needMultiLocales/test_big_recursive_on.future
# multilocale/deitz/needMultiLocales/test_big_recursive_on_begin.future
- Arrays may not be moved to the heap due to begin statements or
other indirect array element accesses.
# memory/deitz/test_tricky_heap_case.future
- Sync variables cannot be used in conditional expressions
# types/sync/vass/if-sync-int.future
- Semantics of sync class types are not clearly defined
# parallel/sync/waynew/class3.future
- Default 'const ref' task intent for record does not prevent updates to sync
variable field in the record from within task.
# parallel/sync/waynew/record2.future
# parallel/sync/waynew/record2c.future
- A 'sync' statement with a 'begin' statement in it at module scope can cause
an internal compiler error.
# users/ferguson/bug-zhao.future
- Specifying one variable multiple times in a with clause should be an error
# parallel/taskPar/cassella/too-many-intents.future
Data Parallelism
----------------
# OMITTED: studies/lsms/shemmy/m-lsms.par-forall.future
# b/c it is unclear if this is user error or a bug
- Some data parallel statements that are meant to be parallelized in Chapel
are serialized with a warning message "X has been serialized". For
example:
1. Scans are always serialized.
# arrays/deitz/parallelism/test_scan_is_parallel.future
2. Assignments from ranges to multidimensional arrays are always serialized.
3. Parallel iteration over opaque domains and arrays are always serialized.
- Array promotion/forall/for/scan expressions always evaluate to 1D arrays.
E.g., f(A) where A promotes f() should result in an array of type:
[A.domain] f(A(i)).type but instead results in a 1D array
E.g., [i in D] f(i) should result in an array of type: [D] f(i).type
but instead results in a 1D array
# arrays/bradc/inferArrayType.future
# arrays/tmacd/promotionLosesArrayShape.future
# reductions/bradc/minmaxlocscan-shape.future
# sparse/bradc/inferSparseArrayType.future
- Parallel zippered iteration does not perform runtime size/shape checks
# functions/iterators/bradc/badzip/arrayZipMismatch.future
# functions/iterators/bradc/badzip/arrayZipMismatch2.future
# functions/iterators/bradc/badzip/rangeSizeMismatch.future
- Domain promotion results in a race condition.
# have not futurized yet (see REGRESSIONS domains/sungeun/assoc/minus_equals.chpl)
- Arrays and domains of different ranks can be zippered serially.
- Reductions and scans of arrays of arrays may result in errors.
# arrays/sungeun/array_of_arrays/bxor_reduce.future
# arrays/sungeun/array_of_arrays/max_reduce.future
# arrays/sungeun/array_of_arrays/sum_reduce.future
# studies/shootout/nbody/sidelnik/nbody_fullreduction.future
- Reduction type definitions nested in classes or records cannot be
used directly outside of enclosing class or record's scope.
# users/ferguson/histogram/reductionex_class.future
# users/ferguson/histogram/reductionex_record.future
- Reductions zippered arrays of mismatched rank result in a compile time error.
# arrays/diten/reduce2Dwith3D.future
# arrays/diten/reduce3Dwith2D.future
- Cannot not use an instance of a reduction class for a reduction.
# reductions/sungeun/count.future
- Whole-domain assignment operations on sparse domains are not all
serialized as they should be.
# domains/sungeun/sparse/minus_equals.future
# domains/sungeun/sparse/plus_equals.future
- Task intents do not work for coforalls and cobegins used in iterators.
# TODO: are there any futures? better wording?
- 'in' and 'const in' forall intents do not work correctly
# parallel/forall/in-intents/array-var-var.future
# parallel/forall/in-intents/both-arr-dom-const-var.future
# parallel/forall/in-intents/both-arr-dom-var-const.future
# parallel/forall/in-intents/domain-var-var.future
- Iterating over a range where bound+stride overflows the index type
results in runtime halt
# users/bguarraci/for_byte.future
- Overloaded xor used in a reduction may result in an internal
compiler error.
# reductions/bradc/badoverload.future
- Zipping an associative domain with another iterator in a forall loop can
result in compile time errors.
# users/ferguson/assoc_domain_zip_range1.future
# users/ferguson/assoc_domain_zip_range.future
Standard Modules, Standard Distributions, and Standard Layouts
--------------------------------------------------------------
- On some platforms, the Math module is limited by the back-end C compiler.
- Extended precision math functions are not supported.
# modules/standard/math/figueroa/extended-precision_math_functions.future
- The BlockCyclic distribution is incomplete.
- Reindexing stridable Cyclic is not fully supported.
# users/jglewis/test_cyclic_dist.future
- Block and Cyclic domains containing indices near the minimum or
maximum integral type may overflow.
- Array assignment fails for Block distributions with bounding boxes
that do not overlap with the bounds of the domain.
# arrays/sungeun/multilocale/weird_bbox_block.future
- Records with domain map fields do not work.
# types/records/sungeun/distInRecord.future
# types/records/sungeun/distInRecordInClass.future
Input and Output
----------------
- Printing of replicated arrays may not work properly.
# io/vass/writeThis-on.future
- Using 'on' in a writeThis() method can lead to a deadlock.
# multilocale/bradc/needMultiLocales/writeThisUsingOn.future
# distributions/vass/dmap-writeln-default-value.future
- Calling writeln() of function names should be illegal, but currently
results in unexpected output, obscure error messages, or internal
compiler errors.
# io/sungeun/funcPtr1.future
# io/sungeun/funcPtr2.future
# io/sungeun/funcPtr3.future
# io/sungeun/funcPtr4.future
# io/sungeun/funcPtr5.future
# io/sungeun/funcPtr6.future
- Reading class fields out of order is not supported
# io/ferguson/read-class-reorder3.future
Optimizations
-------------
# OMITTED: optimizations/rafa/rankChange.future
# b/c workaround put in place
# OMITTED: arrays/diten/replaceArrayAccess/aliasThroughArgs2.future
# OMITTED: arrays/diten/replaceArrayAccess/modifyInAnotherTask2.future
# OMITTED: arrays/diten/replaceArrayAccess/wholeArrayAssignInLoop.future
# b/c this optimization is still in "experimental" phase
- Disabling inlining may cause incorrect code to be generated.
# SEE NIGHTLY BASELINE TESTING NOTES
# functions/deitz/nested/test_nested_var_iterator3.future
- Module scope runtime constants are not replicated across locales
# users/bguarraci/const_locale.future
Miscellaneous
-------------
# OMITTED: chpldoc/compflags/alphabetical/classFields.doc.future
# b/c the future is terse, and I have no idea what is wrong
# OMITTED: memory/shannon/memstatEquals.future
# b/c it's pretty benign and probably will not cause a problem
# OMITTED: modules/bradc/mainRoutineSurprise/M2.future
# b/c it's not clear if this is a bug or a feature request
# OMITTED: types/scalar/tmacd/fatal.future
# b/c it's a bit difficult to describe.
- Nil extern class references not properly handled.
# users/ferguson/extern_class_test.future
- Extern functions with array arguments cannot have specified 'void' return type
# users/ibertolacc/void_extern_proc_array.future
- Functions from extern includes that have naming conflicts with
internal functions result in a back-end C compiler error.
# extern/tzakian/shadow.future
- Functions and variables declared with the same name at the same scope result
in multiple definition errors
# users/bguarraci/function_name.future
- Leaving off () when calling exit results in an internal compiler
error.
# exits/albrecht/exitWithNoCall.future
# exits/sungeun/exitWithNoParensNoArgs.future
- Compiler warning mechanism not always type-checked correctly.
# users/vass/tuple-crash-1.future
- Compiler warning mechanism can result it lost warning if there are
multiple warnings.
# trivial/vass/repeated-warning-1.future
- If the -o argument matches an existing directory name <dir>, the
resulting binary is placed in <dir>/<dir>.tmp.
# compflags/bradc/dirNameMatchesBin/foo.future
- The usual scoping rules are not followed perfectly during function
and type resolution.
# types/records/sungeun/chapelTypes/record_range.future
- Programs requiring non-linear resolution may fail to compile.
E.g., mutual module uses that access variables across both modules
- Creating many domain types or arrays or tuples types causes the
compilation time to become unreasonable.
# arrays/deitz/many/test_many_arrays_of_star_tuples.future
# arrays/deitz/many/test_many_ranks_of_arithmetic_domains.future
- Types composed of runtime types are not runtime types.
# arrays/deitz/part3/test_record_of_array_type.future
# arrays/deitz/part3/test_record_of_domain_type.future
# arrays/deitz/part6/test_tuple_of_array.future
# types/tuple/diten/runtimeTypeInTuple.future
# types/tuple/diten/runtimeTypeInTuple2.future
# types/tuple/diten/tupleOfArray.future
# types/tuple/diten/tupleOfArray2.future
# types/tuple/stonea/returnArrayTuple.future
- Indexing string literals results in a parse error
# types/string/sungeun/c_string/substr.future
- Getting the locale-id of variable in local-on statement can be incorrect.
# optimizations/localon/bad-id.future
Performance
-----------
- The body of forall loops over domains with non-default distribution
are unnecessarily cloned.
# distributions/bradc/clonedForall.future
- Many provably local variables are unnecessarily widen for
multilocale execution
# performance/bradc/refArgIsWide.future
- Task creation for coforall/cobegin statements can be better optimized.
# multilocale/lydia/checkNumTasks.future
- Mechanisms for program tear-down can be better optimized.
# parallel/taskPar/sungeun/endCountTest.future
chpldoc
-------
- chpldoc comments that are not closed with using the specified
comment style are not detected.
# chpldoc/compflags/comment/badClose.doc.future
- chpldoc is incorrect or incomplete for some types
# chpldoc/enum/docConstants.doc.future
Developer
---------
- User defined chpl__initCopy() function are ignored in the
removeUnnecessaryAutoCopyCalls pass.
# classes/hilde/alwaysOverrideCopyInit.future
- The "no copy" and "no auto destroy" pragmas used with variable
declarations with specified types result in an internal compiler
error.
# trivial/sungeun/pragmas/noCopyNoDestroyPragma.future
# trivial/sungeun/pragmas/noCopyNoDestroyPragmaArray.future
# trivial/sungeun/pragmas/noCopyNoDestroyPragmaArrayWithInit.future
# trivial/sungeun/pragmas/noCopyNoDestroyPragmaWithInit.future
LLVM (experimental)
-------------------
Multi-locale/GASNet executions
------------------------------
- stdin does not work for multi-locale/GASNet executions
Incremental compilation (experimental)
--------------------------------------
- Incremental compilation support is not enabled for LLVM
# compflags/kushal/llvm-incremental.future
- Cannot include C header files that define symbols with
incremental compilation enabled
# extern/kushal/extern-includes.future
Portability
-----------
Linux64:
- On some systems the GMP fac_ui function causes valgrind to issue invalid
read errors
# modules/standard/gmp/lydia/gmp_leak.future
Ubuntu:
- Ubuntu 14.04 32-bit (not 64-bit) has a bug in preadv/pwritev support.
This problem may prevent proper functioning for many of Chapel's IO
routines. This problem is not present in Ubuntu 12.04 or 14.10 or any
64-bit version. See the bug report here:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1309818
OpenSUSE:
- If the site-config package is installed, it sets a CONFIG_SITE environment
variable which causes some packages in third-party to store their
libraries in lib64 (vs lib) on 64-bit platforms. Unsetting CONFIG_SITE will
allow Chapel to build in that case.
cygwin:
- cygwin builds may demonstrate portability issues.
- The qthreads tasking layer is not supported.
- Some utf8 characters have incorrect lengths on cygwin
# io/ferguson/utf8/widecols-cygwin-copy.future
OS/X:
- For older version (e.g., leopard), the qthreads tasking layer is not
supported.
- Static linking not supported.
PGI compilers:
- Chapel generated identifier names may be too long.
Intel compilers:
- Static linking may not work.
# OMITTED: studies/lulesh/intelVectBug/lulesh.future
# We suspect that there is a vectorization bug with icc
IEEE floating-point standard conformance:
The --ieee-float flag is implemented by passing appropriate flags to
the back-end compiler. For some compilers, 100% IEEE floating-point
conformance is not implemented. In such cases, the --ieee-float
flag will request the most standard conformant floating-point
behavior (if such behavior can be identified).
# Not Really Bugs
# OMITTED: modules/standard/LAPACK/dgees.future
# c_ptr(c_char) is the same signedness as the underlying c_char. I believe this
# test is incorrect about this point.
# OMITTED: users/bguarraci/count_type.future
# The range count operator's argument type shouldn't change the range's index type
# OMITTED: users/bguarraci/ref_nil_conjunction.future
# "if (classRef) then ..." is true if not nil, but
# "if (classRef1 && classRef2) then ..." doesn't treat each value as a boolean
# OMITTED: users/bguarraci/sorted_access.future
# iterator or promoted expressions cannot be accessed as arrays without
# assigning to an array first
# OMITTED: users/bguarraci/string_compilation.future
# string(1) is an unresolved call to a function named string, not a cast from
# int to string