Хочу странного. «Для души», практически свои хотелки не обосную.
Язык обязательно статически типизированный. Должен работать со скоростью порядка Java. C, C++, D, Rust и всё такое.
Асинхронная обработка запросов. Полностью. В node.js это близко к идеалу. Любой I/O должен переключать управление на следующий запрос. И всё это с минимальным оверхедом, чтобы могли лежать миллионы коннектов без значимого проседания, пока процессора и памяти хватает. Естественно коннект не должен занимать много памяти. Экстрима в десятки байтов не надо, но и сотни килобайтов тоже.
В то же время утилизировать все ядра процессора из одного процесса. Один вечный цикл не должен стопать всех пользователей. Висит запрос - или скидывать с ядра (имитация перключения потоков в ОС), или хотя бы перенаправлять все остальные участки кода выполняться на других ядрах.
Нормальный развитый REST-фреймворк. Каких то особых требований нет, он просто должен работать и обеспечивать более-менее удобный интерфейс. Естественно полностью асинхронный.
Очень хочется мегабыстрого шаблонизатора. Который будет работать не в разы медленней, чем выплёвывание в сокет текста и подставленных значений переменных.
Общее потребление памяти должно быть вменяемым после старта. 10 мегабайтов это вменяемо. 500 мегабайтов это не вменяемо.
Что я пока видел.
Node.js. Первый минус - динамический JS. Второй минус - однопоточность. Но асинхронность сделана идеально, синхронный вызов найти надо постараться.
Java: практически нигде нет нормальной асинхронности, модель «поток на запрос» доминирует. Драйверы JDBC все синхронные. Что-то такое есть в Play, но это скала с её десятками и сотнями мегабайтов потребления оперативной памяти.
Go: есть интересный фреймворк revel. Но я пока не понимаю модель многопоточности в Go, какие у неё затраты. Как я понимаю, накладных расходов куда больше, чем в случае node.js.
Rust. Сама идея этого языка мне нравится, но нет нормальных библиотек. Какое то teepee вроде пилят, но хз когда допилят. И опять же не совсем понимаю модели многопоточности и накладных расходов.
В идеале я бы хотел видеть Java (не Scala!). Поверх Netty должна быть написана полностью асинхронная (это важно!) прослойка, которая даёт удобный способ работы с асинхронным API, посредством Promises. Учитывая, что в Java 8 все эти лямбды должны достаточно неплохо оптимизировать, работать оно должно шустро. Плюс надо написать асинхронный драйвер к постгресу на Java. Но такого нигде нет и вряд ли будет :( Даже думал запилить, но вряд ли потяну, сложная штука, нужен реально башковитый чувак, чтобы такое сделать как положено.
Собственно хотелось бы узнать, может я чего упускаю? И, если кто хорошо понимает потроха Go и/или Rust, может популярно объяснит, какие накладные расходы там идут в случае «зелёных» потоков, как система отнесётся к миллиону спящих на I/O задач.
Возможно есть какой-то фреймворк для C? Какое-нибудь расширение nginx-а? Хотя асинхронное программирование на C это, наверное, тот ещё изврат.