> On 25 Jan 2021, at 11:40, Boris Kuznetsov <[email protected]> wrote:
>
> Recompilation (and delay) on every new run seems like a major issue.
>
> Probably, if you call `Mix.install/?`, then you should pass the target
> directory to cache compiled dependencies.
>
> By default it can use `_build` as all current mix projects.
The fake Mix project contains both deps/ and importantly _build folders so
recompilations won’t happen once a given set of dependencies given to
Mix.install is cached.
Recompilations would only happen if the dependencies change as is the case of
`:path` dependencies. It’s actually pretty cool that `Mix.install [{:foo, path:
“~/src/foo”}]` works out of the box and would recompile on start if that dep
changed.
>
>> On 21 Jan 2021, at 17:48, José Valim <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> > The latter solution could most easily be solved by using /tmp and making a
>> > new folder each iex instance that calls mix install (possibly also
>> > respecting the cache dir flag options)
>>
>> Good points.
>>
>> That's kind of how the current implementation works. The cache is in tmp and
>> the cache key is the MD5 of the deps given to install. This means that the
>> cache is most likely to be used only by the current script. So it reduces
>> the odds of interference between scripts. Otherwise you will have to fetch
>> and compile dependencies every time the script runs, which would be too slow.
>>
>> Issues like Elixir version and Erlang version can be solved in two ways: 1.
>> don't do anything because Mix already solves those or 2. add those to the
>> cache key - either as part of the directory structure (my vote) or as part
>> of the MD5 computation.
>>
>> We could also support explicit naming for better control over the cache -
>> but I would wait for those until people effectively run into cache issues,
>> if ever. :)
>>
>>
>>
>> On Thu, Jan 21, 2021 at 3:35 PM Jonathan Arnett <[email protected]
>> <mailto:[email protected]>> wrote:
>> I am also a fan of the proposal. One addendum that I would like to suggest
>> is adding a flag to IEx such that a library can be "installed" when the
>> shell starts.
>>
>> e.g.
>> iex --install :decimal
>>
>> On 1/21/21 9:01 AM, Anil Kulkarni wrote:
>>> I love the general idea. I think it's a great solution for copy/paste/run
>>> needs that a scripting language should have.
>>>
>>> I do have a question about the caching packages across runs. What is the
>>> motivation? Is it to increase performance, or are there other reasons?
>>>
>>> My concern is that inevitably there will be issues with the cache. It
>>> reminds me of global pip requirements, global npm installs etc.
>>>
>>> Some issues I have personally run into with these solutions ( python and
>>> js) include:
>>>
>>> 1) the cache size increasing and needing to manually trim it. Consider
>>> popping a shell into a production environment to fix an issue. You
>>> wouldn'twant to leave stuff behind.
>>>
>>> 2) Managing dependencies across language upgrades (e.g. updating node to
>>> 15.5, what happens to the dependencies? What happens for sxs (side by side)
>>>
>>> 3. Inconsistencies due to caching, especially with node. E.g. Needing to
>>> blow away the cache and download fresh to fix an issue
>>>
>>> 4. Fire corruption due to other programs needing to nuke the cache
>>>
>>> 5. Issues that arise when backing up and then trying to restore to a
>>> different home folder (I had a python dependency hard code the path an
>>> install)
>>>
>>> 6. File permission changes, especially when switching between different
>>> users on chroot'd terminals
>>>
>>> Some of these issues are going to be a problem anyways, but I think that
>>> caching provides another avenue for things go wrong.
>>>
>>> My suggestion would be to either add explicit cache management
>>> functionality to elixir - including which path it lives, and blowing away
>>> the cache or to not use one for now.
>>>
>>> The former could look like this:
>>> ELIXIR_CACHE_DIR=/foo iex
>>> (eg set an environment var then call iex) or with parameters passed in iex
>>> --cache-dir
>>> iex --clear-cache
>>>
>>> The latter solution could most easily be solved by using /tmp and making a
>>> new folder each iex instance that calls mix install (possibly also
>>> respecting the cache dir flag options)
>>>
>>> -Anil
>>>
>>>> On Jan 21, 2021, at 05:02, Felipe Stival <[email protected]>
>>>> <mailto:[email protected]> wrote:
>>>>
>>>>
>>>> +1 for this proposal.
>>>>
>>>> On Thu, Jan 21, 2021, 09:54 Jon Rowe <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>> I plus one this proposal, it’s similar (for scripts at least) to what Ruby
>>>> has with bundler inline mode, I like this because such techniques allow
>>>> you to create single file reproductions of issues, which are great for bug
>>>> reports in PRs.
>>>>
>>>> Cheers
>>>> Jon
>>>> ----------------
>>>> [email protected] <mailto:[email protected]>
>>>> https://jonrowe.co.uk <https://jonrowe.co.uk/>
>>>>
>>>> On 21 January 2021 at 12:18, eksperimental wrote:
>>>>> `Mix.install(:decimal)` should also work out of the box IMO.
>>>>>
>>>>> On Thu, 21 Jan 2021 03:18:44 -0800 (PST)
>>>>> "[email protected] <mailto:[email protected]>"
>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>> --
>>>> You received this message because you are subscribed to the Google Groups
>>>> "elixir-lang-core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an
>>>> email to [email protected]
>>>> <mailto:[email protected]>.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/elixir-lang-core/dejalu-217-a7302266-156c-46d8-86f9-089e2065af2b%40jonrowe.co.uk
>>>>
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/dejalu-217-a7302266-156c-46d8-86f9-089e2065af2b%40jonrowe.co.uk?utm_medium=email&utm_source=footer>.
>>>> --
>>>> You received this message because you are subscribed to the Google Groups
>>>> "elixir-lang-core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an
>>>> email to [email protected]
>>>> <mailto:[email protected]>.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/elixir-lang-core/CAKC64%2ByRtG-XGWkSADPXHzOLZ8AJ4g73DxEjC_8Jp1b3-sHKAg%40mail.gmail.com
>>>>
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAKC64%2ByRtG-XGWkSADPXHzOLZ8AJ4g73DxEjC_8Jp1b3-sHKAg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "elixir-lang-core" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to [email protected]
>>> <mailto:[email protected]>.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/elixir-lang-core/0100017725401617-8cdc5c5f-8434-42d6-a3b5-0272cbf65824-000000%40email.amazonses.com
>>>
>>> <https://groups.google.com/d/msgid/elixir-lang-core/0100017725401617-8cdc5c5f-8434-42d6-a3b5-0272cbf65824-000000%40email.amazonses.com?utm_medium=email&utm_source=footer>.
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected]
>> <mailto:[email protected]>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/62020d79-4f44-38d5-65e7-a786808da633%40gmail.com
>>
>> <https://groups.google.com/d/msgid/elixir-lang-core/62020d79-4f44-38d5-65e7-a786808da633%40gmail.com?utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected]
>> <mailto:[email protected]>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JFHs6stz5sHvFabZXP%2BS3HXMLN8PKd%2BVNJ%3DmwbF8-J_A%40mail.gmail.com
>>
>> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JFHs6stz5sHvFabZXP%2BS3HXMLN8PKd%2BVNJ%3DmwbF8-J_A%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/1A4436D3-17AC-41BB-94CB-57F45D0ECF37%40achempion.com
>
> <https://groups.google.com/d/msgid/elixir-lang-core/1A4436D3-17AC-41BB-94CB-57F45D0ECF37%40achempion.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/B3846436-9C8A-4F4D-A136-B2EEB8E3F914%40wojtekmach.pl.