Remix.run Logo
▲ When Modernization Breaks Working Code: A Study of LLMs on Legacy PHP(arxiv.org)
16 points by tambourine_man a day ago | 11 comments
▲plorkyeran 2 hours ago | parent | next [-]

> We study a common intermediate setting: a developer pastes one complete file into a chat assistant [5], which sees the file’s internal structure but not its callers or dependencies. We evaluate the first answer, not an agent’s result after iterating on errors.

Very unsurprising results given this methodology. The agentic approach where models are allowed to iterate on changes is a very big part of what has made LLM coding tools actually useful.

▲yodon 2 hours ago | parent [-]

> We study a common intermediate setting: a developer pastes one complete file into a chat assistant [5], which sees the file’s internal structure but not its callers or dependencies.

Ack! Do people actually try to develop software this way?

▲refactor_master an hour ago | parent | next [-]

I do it from time to time when I’ve run out of tokens at the end of the month. But even then I’ve created a script to pack multiple code files and their dependencies into a single txt, with a tree overview.

And of course you never change the test suite in the process… That would be bad developer practice, LLM or not.

Gemini 3.1 Pro can easily work with this effectively, if not a bit slower than an agent.

▲1718627440 32 minutes ago | parent [-]

> But even then I’ve created a script to pack multiple code files and their dependencies into a single txt, with a tree overview.

Like:

    $ cat $(find project/ -name '*.py' -type f)

?
▲plorkyeran an hour ago | parent | prev | next [-]

Not any more, but it was common before Claude Code came along (~18 months ago). Based on the model versions used it may have still been the most common thing when the paper was started.

▲antisthenes 27 minutes ago | parent | prev | next [-]

When I need modification to a small independent Python script (<1000 loc), sure.

Not for anything serious though.

▲TZubiri an hour ago | parent | prev [-]

It's pretty much the standard way to develop in OOP.

You are not supposed to hold all of the code in context, but to have a single object and reason about with what it see.s

▲kgeist an hour ago | parent | prev | next [-]

The average age of the explored models is ~1.5 years. They discuss PHP 8.3, which was released in 2023 and has not been actively supported since 2025. Agentic coding isn't used.

I'm not sure what the point is of publishing results on the mid-2025 state of the art in October 2026.

▲StevenWaterman 2 hours ago | parent | prev | next [-]

Models:

- Claude Sonnet

- Gemini 2.5 Flash

- Gemini 2.5 Pro

- GPT-5 Codex

- Llama 3.3 70B

It's inconvenient how quickly things are improving, makes potentially-interesting results like this dubiously relevant

▲AdrianB1 2 hours ago | parent | prev | next [-]

One year ago I was very skeptical about such attempts. Today, it would be my first choice as LLMs evolved a lot and the result of carefully using a LLM for this task can be very, very good.

▲TZubiri an hour ago | parent | prev [-]

When code output becomes cheap, you write 15 million lines of code per weekend, and of course everything gets deprecated pretty fast version 1? that was like 4 geological ages ago (1 month) that's legacy.