> On Jul 3, 2024, at 6:16 PM, Michael Morris <tendo...@gmail.com> wrote:
> 
> Hello all. Hitting reset again as the primary problem at hand has become 
> clear.  Let's recap it.
> 
> Autoloading is great for loading packages, but it can't load different 
> versions of the same package at the same time.  Why would you want to do that?
> 
> When you don't have full control of the code.
> 
> For example, consider Drupal.  It is running Twig at some version of 3 at the 
> moment. Suppose Twig 4 is introduced with significant backward compatibility 
> breaks (Not saying the authors would do such a thing) but also wonderful 
> features.
> …[snip]...
> This is why I advocate a new keyword for this - import.  Import’s behavior is 
> most similar to require_once, but it doesn't have to be the same.  Since it 
> is a new entrypoint into the engine the way the engine considers the code can 
> be different - whether slightly different or radically different is a debate 
> for another time. I'm going to stick with only those changes that make sense 
> in the context of package links.


I’m seeing a lot of conflation of ‘module’ and ‘package’ in these discussions, 
and to me they mean different things:

* A module is a sort of “first class namespace” that can export symbols and 
import others.  Think ES5 or python modules.  If you don’t want it 1-1 with 
files, think Perl modules.

* A package is an “installable” unit that provides modules, among other things. 
 Packages have metadata, the most important piece of which is a 
machine-readable version.

Certainly there’s overlap between the two, but the first is a more low-level 
thing that doesn’t need worry itself about versioning let alone multiple 
simultaneous versions.  I just don’t want to see the possibility of having 
basic “import” and “export” functionality crushed under the bikeshed while all 
the fine semantics of versioning are worked out.  

—c

Reply via email to