Unanswered Questions

13 questions with no upvoted or accepted answers
14 votes
0 answers

What is the relationship between STG and RVSDG?

GHC is an optimizing Haskell compiler. Since Haskell is lazy and mutation is rare, control flow and data flow are often very closely aligned. Therefore, it is often most useful to think about ...
12 votes
0 answers

Why were OS/360 PL/I procedure calls so expensive?

In Guy Steele’s famous paper Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO, he describes the poor performance of ...
10 votes
0 answers

What styles of interpreter are not well-supported by RPython?

The RPython toolchain translates interpreters to JIT compilers. The interpreter may be written in any style; the corresponding JIT compiler is defined by annotations on the main loops of the ...
10 votes
1 answer

Towards a better default listlike datastructure for functional languages

In most functional languages I know of, linked lists are the default datastructure of choice for many operations. The benefits are clear - they're clearly encoded with ADTs, and can be utilised easily ...
9 votes
0 answers

How to detect changes to definitions and their impacts?

I'm implementing the Language Server Protocol (LSP) for my language, and I'm having huge problems tracking updated definitions. 1. How to determine which files have been changed? lsp can only monitor ...
8 votes
0 answers

Extending Hindley Milner with (mutual) recursion

What's a good approach for extending Hindley Milner with mutual recursion without de-sugaring to let+fix+records? My thinking is (assuming no polymorphic recursion) Collect mutually recursive lets ...
8 votes
0 answers

How does GADTs as in Haskell-like languages compare to indexed families in dependent types?

In Haskell, GADTs are only indexed by types, while indexed families in DT are mainly indexed by terms. With the presence of without-K, it is hard to refute cases just by unifying type terms, while in ...
5 votes
1 answer

Optimization algorithm using conditional invariants

I am looking for an optimization algorithm that would make use of invariants in regions of code. For example if (n == 0) f(n); should be changed to ...
4 votes
0 answers

Determining the most optimized date type for the platform with type inference

For my programming language, I have built an engine that goes after the parser and before the compiler. This engine analyzes, validates, and simplifies the AST. During the analasys, it determines as ...
4 votes
0 answers

Why has there been little recent work on GPU compiler phase optimization?

While GPU compiler phase optimization has been shown to improve performance significantly (e.g. https://link.springer.com/chapter/10.1007/978-3-319-75178-8_35), there has been very little follow-up ...
3 votes
0 answers

Do any languages provide arrays that are always powers of 2 in length?

In the early 1970s, I had university a co-op job at a place where one of the main languages used was like a glorified calculator. It provided two stacks, and all variables and operators were a single ...
2 votes
0 answers

Why would an APL implementation include "Deep Transpose"?

APL64 includes a ⎕DTR system function which, as far as I can tell, is equivalent to ⍉¨⍉ i.e. the transposed outer array with ...
0 votes
0 answers

Pros and cons of treating endless loops as "anything can happen" UB, versus allowing limited reordering

Many programming languages, including C89, specify that the behavior of a program in terms of sequentially executed steps, whose behavior is in turn defined in terms of the program's state when the ...