> What APL need that only more modern languages have?

Let me preface this by saying that I've been away from regular use of APL for years. I've forgotten a lot of the details but I'll throw out o few seat of the pants thoughts on this.

In no particular order (and not specifically related to modern languages):

The option for compilation would be very interesting.

Within a function, variables are global by default. Huge pain in the ass.

Objects.

A language-defined interface to C (or some other suitable language) for
when you need to speed things up.

An extension to nested arrays that allows you to create C-like structures.
I am going after the self-documenting nature of having structure members
have name-based access.

An extension to function definition to allow for more than two arguments.
This would require a little language re-thinking.

I would also look into making a hybrid that includes some C-like syntax
with an APL core. C/C++ -like comments and conditionals with bracketed
groupings of APL code would go far in making code easier to read and
organize.

Native C-like switch() primitive with APL-inspired extensions. For example,
switch could take a vector argument.

APL-run-time-definable comparison operator. Sometimes I want to apply a complex
evaluation function to data rather than the simple equal, not equal, grater/less
than, etc. operators.

The ability to enforce data types if desired.

A means of telling the compiler/interpreter to optimize code
--at the statement level-- for speed or resource (memory footprint) and
other criteria. Certain operations can explode into huge multidimensional
arrays which isn't always the best idea.

Real-time extensions integrated into the language.

Ability to use GPU resources for computation.

Standard interface for custom hardware-based acceleration (read: custom
FPGA boards).

True binary vectors and arrays.

More flexibility in multidimensional array indexing.

A rethinking of the workspace model to better support multi-developer
environments.

Genetic and Evolutionary computing primitives built into the language.

Built in primitives for multi-threaded/multitasked computing.

Built in primitives for network access and processing.

Built in primitives for multi-core and distributed computing.

Built-in primitives for data exchange. For example, ingest or output
nested array data from/to JSON, SQL, XML or other modern data formats.

Better pattern-matching primitives. I'm thinking at least regular
expressions.

A general cleanup of the notation to remove lame text-based "fixes"
from an era when rendering non-ascii characters required custom ROMs
on the graphics card. All APL notation should be symbolic. ASCII
should be limited to strings, function, variable, object and other
constructs that require text.

Make it open source and make the open source version far superior to
any available commercial version.

Like I said, I've been away from APL for a while. I am sure there are a lot more important enhancements I could suggest if I spent a year seriously getting back into the game. Today I have very little use for APL outside of using it as an advanced calculator of sorts, mostly when I do hardware design. Even then, sometimes it is more convenient to use
Excel for that purpose because of the value in being able to communicate with others.