Phosphor (forge)

Installation

Manual installation (recommended)

Usually, releases will be made available on GitHub slightly sooner than other locations.

Bleeding-edge builds (unstable)

If you are a player who is looking to get your hands on the latest bleeding-edge changes for testing, consider
taking a look at the automated builds produced through our GitHub Actions workflow.
This workflow automatically runs every time a change is pushed to the repository, and as such, the builds it produces
will generally reflect the latest snapshot of development.

Bleeding edge builds will often include unfinished code that hasn’t been extensively tested. That code may introduce
incomplete features, bugs, crashes, and all other kinds of weird issues. You should not use these bleeding edge builds
unless you know what you are doing and are comfortable with software debugging. If you report issues using these builds,
we will expect that this is the case. Caveat emptor.

Reporting Issues

You can report bugs and crashes by opening an issue on our issue tracker.
Before opening a new issue, use the search tool to make sure that your issue has not already been reported and ensure
that you have completely filled out the issue template. Issues which are duplicates or do not contain the necessary
information to triage and debug may be closed.

Please note that while the issue tracker is open to feature requests, development is primarily focused on
improving hardware compatibility, performance, and finishing any unimplemented features necessary for parity with
the vanilla renderer.

Community

  • Get installation help and technical support with all of our mods
  • Be notified of the latest developments as they happen
  • Get involved and collaborate with the rest of our team
  • … and just hang out with the rest of our community.

Building from sources

Support is not provided for setting up build environments or compiling the mod. We ask that
users who are looking to get their hands dirty with the code have a basic understanding of compiling Java/Gradle
projects. The basic overview is provided here for those familiar.

Building with Gradle

Phosphor uses a typical Gradle project structure and can be built by simply running the default task. After Gradle
finishes building the project, you can find the build artifacts (typical mod binaries, and their sources) in
.

Build artifacts ending in are outputs containing the sources and compiled classes
before they are remapped into stable intermediary names. If you are working in a developer environment and would
like to add the mod to your game, you should prefer to use the or configurations provided by
Loom instead of these outputs.

Phosphor is licensed under GNU LGPLv3, a free and open-source license. For more information, please see the license file.

Chunk Pregeneration

Name Versions ModLoader Description Author
1.4.7, 1.7.X, 1.8.9, 1.10.X, 1.11.X, 1.11.2, 1.12.X, 1.14.4, 1.15.2, 1.16.X Forge Chunk Pregenerator is a tool that allows you to generate your World more efficiently. Speiger
1.14.X, 1.15.X, 1.16.X, 1.17.X Fabric Mod that allows you to pregenerate chunks for your server or for singleplayer while running fabric SuperCoder79
Chunky Forge: 1.16.X, 1.17.X; Fabric: 1.16.X, 1.17.X; Sponge: Sponge 8+; Spigot: 1.13.X, 1.14.X, 1.15.X, 1.16.X, 1.17.X Pre-generates chunks, quickly and efficiently pop4959
² Cull Particles isn’t needed anymore in newer Forge versions, it was implemented in forge.
³ Do not blame me if you didn’t read this notice, if you try to load a older world in a newer instance of the game, and you have one of these mods installed, bad things will happen, uninstall the mod first.

Installation

Manual installation (recommended)

Usually, releases will be made available on GitHub slightly sooner than other locations.

Bleeding-edge builds (unstable)

If you are a player who is looking to get your hands on the latest bleeding-edge changes for testing, consider
taking a look at the automated builds produced through our GitHub Actions workflow.
This workflow automatically runs every time a change is pushed to the repository, and as such, the builds it produces
will generally reflect the latest snapshot of development.

Bleeding edge builds will often include unfinished code that hasn’t been extensively tested. That code may introduce
incomplete features, bugs, crashes, and all other kinds of weird issues. You should not use these bleeding edge builds
unless you know what you are doing and are comfortable with software debugging. If you report issues using these builds,
we will expect that this is the case. Caveat emptor.

Reporting Issues

You can report bugs and crashes by opening an issue on our issue tracker.
Before opening a new issue, use the search tool to make sure that your issue has not already been reported and ensure
that you have completely filled out the issue template. Issues which are duplicates or do not contain the necessary
information to triage and debug may be closed.

Please note that while the issue tracker is open to feature requests, development is primarily focused on
improving hardware compatibility, performance, and finishing any unimplemented features necessary for parity with
the vanilla renderer.

Community

  • Get installation help and technical support with all of our mods
  • Be notified of the latest developments as they happen
  • Get involved and collaborate with the rest of our team
  • … and just hang out with the rest of our community.

Building from sources

Support is not provided for setting up build environments or compiling the mod. We ask that
users who are looking to get their hands dirty with the code have a basic understanding of compiling Java/Gradle
projects. The basic overview is provided here for those familiar.

Building with Gradle

Phosphor uses a typical Gradle project structure and can be built by simply running the default task. After Gradle
finishes building the project, you can find the build artifacts (typical mod binaries, and their sources) in
.

Build artifacts ending in are outputs containing the sources and compiled classes
before they are remapped into stable intermediary names. If you are working in a developer environment and would
like to add the mod to your game, you should prefer to use the or configurations provided by
Loom instead of these outputs.

Phosphor is licensed under GNU LGPLv3, a free and open-source license. For more information, please see the license file.

Running

Phosphor works by modifying your application’s bytecode to perform data flow tracking. To be complete, Phosphor also modifies the bytecode of JRE-provided classes, too. The first step to using Phosphor is generating an instrumented version of your runtime environment. We have tested Phosphor with Oracle and OpenJDK Java 8 runtimes. Support for newer versions of Java (e.g. 9 and higher) is currently partially implemented, and is a feature that we have on our roadmap.

The instrumenter takes two primary arguments: first a path containing the classes to instrument, and then a destination for the instrumented classes. You can also specify to track taint tags through control flow, to use objects as tags (instead of integers), or to automatically perform taint marking in particular methods using the various options as shown by invoking Phosphor with the «-help» option.

Phosphor now should be configured to correctly run JUnit tests (with taint tracking) in most environments (Mac + Linux + Windows). Running should cause Phosphor to generate several different instrumented JRE’s (for multitaint use, int-tag taint use, and control track use) into the project’s directory, then run unit tests in that JRE that are automatically tracked. You take a look at the test cases to see some example usage. Tests that end in are executed with Phosphor configured for object tags (multi tainting), and tests run in the control tracking mode.

We’ll assume that in all of the code examples below, we’re in the same directory (which has a copy of Phosphor-0.0.5-SNAPSHOT.jar, which you generated by downloading Phosphor, and running ), and that the JRE is located here: (modify this path in the commands below to match your environment).

Important note on OpenJDK vs Oracle’s JDK: Oracle’s JVM requires that the jar that contains all of the cryptography routines () be signed by Oracle, for export control purposes. OpenJDK does not. When Phosphor instruments the JVM, it will break these signatures. Hence, it is not possible to use Phosphor with Oracle’s JDK and use the cryptography functionality of the JVM without some extra work. The first option is (if you have been granted a signing key by Oracle), you can sign the resulting jar. The more attainable option is to instead use the OpenJDK file with your Oracle JVM, which will not have the signature checks, and will work just fine. Alternatively, if this is too complicated (and you need cryptography support), you can just choose to use OpenJDK entirely (which does not have this check).

Then, to instrument the JRE we’ll run:

After you do this, make sure to chmod +x the binaries in the new folder, e.g.

The next step is to instrument the code which you would like to track. This time when you run the instrumenter, pass your entire (compiled) code base to Phosphor for instrumentation, and specify an output folder for that.

We can now run the instrumented code using our instrumented JRE, as such:

Note: It is not 100% necessary to instrument your application/library code in advance — the javaagent will detect any uninstrumented class files as they are being loaded into the JVM and instrument them as necessary. If you want to do this, then you may want to add the flag and Phosphor will cache the generated files in so they aren’t regenerated every run. If you take a look at the execution of Phosphor’s JUnit tests, you’ll notice that this is how they are instrumented. It’s always necessary to instrument the JRE in advance though for bootstrapping.

New 2/27/19: You can no longer specify auto taint methods (what were sources/sinks/taint through methods) for the static instrumenter. Instead, ALL autotaint instrumentation happens via the java agent (this makes it possible to detect child-classes of auto taint classes). You can specify the files to the java agent using the syntax

Im Boden

Auf natürlichem Wege gelangt Phosphor einerseits über die Apatit-Verwitterung in den Boden oder aber aus zersetzter organischer Materie. Die atmosphärische Deposition spielt bei Phosphor nur eine untergeordnete Rolle. Durch Düngung erhöht der Mensch aktiv den Phosphorgehalt im Boden meist über Phosphate.
Als Hauptfaktoren der Verluste kann die Erosion betrachtet werden. Die Auswaschung ist sehr gering und abgesehen von Phosphan-Gas kommt es zu keiner Ausgasung aus dem Boden.
Phosphor besitzt eine sehr schlechte Löslichkeit. So führt zum Beispiel eine Adsorption an Fe und Al Hydroxide in sauren Böden zu einer Phosphatfixierung. In basischen Böden kommt es zu einer Ausfällung mit Ca.
Generell kann man zwischen drei unterschiedlichen Phosphatfraktionen im Boden unterscheiden:

  • In der Bodenlösung verfügbares Phosphat ist direkt pflanzenverfügbar. Jedoch ist diese mit 1–2 kg/ha die kleinste Fraktion.
  • Labiles Phosphat ist durch spezifische Sorption an Eisen- und Aluminium-Oxide oder an Tonminerale locker gebunden. 450–900 kg/ha können so im Boden vorliegen. Durch Resorption kann aus dieser Fraktion bodenverfügbares Phosphat gebildet werden.
  • Stabiles Phosphat hat praktisch keine Bedeutung für die Pflanzenernährung, obwohl es mit 3000–6000 kg/ha die größte der drei Fraktionen ist. Als wichtigste Vertreter seien hier Apatite und Calciumphosphate genannt.

Interacting with Phosphor

Phosphor exposes a simple API to allow to marking data with tags, and to retrieve those tags. Key functionality is implemented in . To get or set the taint tag of a primitive type, developers call the taintedX or getTaint(X) method (replacing X with each of the primitive types, e.g. taintedByte, etc.).
Ignore the methods ending with the suffix $$PHOSPHOR, they are used internally.
To get or set the taint tag of an object, first cast that object to the interface TaintedWithObjTag (Phosphor changes all classes to implement this interface), and use the get and set methods.

You can determine if a variable is derived from a particular tainted source by examining the labels on that variable’s object.

You can detaint variables with Phosphor — to do so, simply use the interface to set the taint on a value to (or ).

Introduction of Taint Level

Originally, Phosphor distinguished between two types of data: tainted and untainted. Some data was tainted if a Taint object was placed upon the object (in the form an additional object parameter in the case that the data was an object, or in the form of additional method arguments in the case the data was a primitive). Some data was untainted if no such Taint object was placed upon the data.

To accommodate the requirement of ‘maybe tainted’ data, this system was altered to allow a Taint object to have one of many different taint levels. In this design, taint levels of ‘not tainted’, ‘maybe tainted’, and ‘tainted’ were used (in that linear order), though there is theoretically no limit to the number of levels or complexity of ordering with this implementation.

As per the functional requirements listed, OpenMRS functions were to be marked as either sources, sinks, or sanitizers. As such, the introduction of a ‘tainted’ taint level could only come from a marked source. To accommodate this, an additional taint level of ‘unknown’ was introduced and is given to every newly instantiated Taint object. And then, at every source, the taint level is set to ‘tainted’. This ensures that only tainted data from marked sources reach sinks, and also ensures that taint level data is propagating properly.

Lattice Implementation

The taint level was implemented in Phosphor with a lattice data structure, itself implemented using graphs. A lattice works nicely with the specified taint levels, since the greatest lower bound (GLB) and the least upper bound (LUB) can be used in the propagation and checking of taints. A lattice is also beneficial in that it allows more taint levels to be easily added and ordered with arbitrary complexity.

The lattice is used by adding the desired lattice elements and then adding orderings between the elements. In the case of the taint levels, all four are added and then the ordering between each are added to create a linear relationship between the four. The GLB and LUB can then be calculated on a collection of lattice elements. For taint levels, the LUB of a two given taints is used to propagate the taint level. The GLB of a given taint level and ‘maybe tainted’ is used in sanitizers to indicate that the data is partially endorsed.

Runtime Complexity

The runtime complexity for each of the lattice methods are as follows.

Method Complexity
addElement O(1)
addOrdering O(1)
leastUpperBound O(N * M^2) *
greatestLowerBound O(N * M^2) *
compareElements O(M^2)

For N = the number of elements passed to the function, and M = the number of elements in the lattice.

* For our purposes, a maximum of two elements are ever LUBed or GLBed, reducing the O(N * M^2) complexity to simply O(M^2).

If the number of lattice elements and orderings were to grow significantly large, further optimizations to the lattice methods may be desired. One way to optimize these would be to calculate all of the possible LUB and GLB results ahead of time, and look them up in constant time. This is especially practical in this situation due to only needing LUB and GLB results between pairs of elements, meaning the space complexity would be O(N^2) rather than O(N^N). For a lattice of four elements, however, the overhead imposed by lattice operations was not enough to worry about.

Vorkommen

In der Natur kommt Phosphor ausschließlich in gebundener Form, das heißt nicht gediegen, meist in Form der Phosphate in der Erdkruste vor (Gehalt in der Erdkruste: ~ 0,09 %>). Typische Mineralien sind etwa die Apatite Ca5(PO4)3(F,Cl,OH). Besonders der Fluorapatit und der mit Calciumcarbonat durchsetzte Phosphorit stellen ökonomisch die wichtigsten Phosphate dar. Darüber hinaus gibt es weitere phosphorhaltige Mineralien, wie beispielsweise den Wavellit Al3(PO4)(F,OH) · 5 H2O, den Vivianit Fe3(PO4)2 · 8 H2O und den Türkis CuAl6[(PO4)(OH2)]4 · 4 H2O.

Die größten Vorkommen an Phosphat-Mineralien findet man in Afrika (Marokko, Westsahara), in China und den USA (Florida). Die kontinentalen Vorkommen reichen nur noch für wenige Jahrzehnte; Schätzungen variieren zwischen 50 und 130 Jahren . Es existieren allerdings große Vorkommen unter Wasser, die momentan nicht ökonomisch abgebaut werden können.

Außer in Mineralien kommt Phosphor auch in Ablagerungen von Vogelkot von Meeresvögeln, dem sogenannten Guano (Chilesalpeter) vor. Dieser findet sich vorwiegend auf einigen Inseln im Pazifischen Ozean, wie Nauru oder Kiribati und in Südamerika (Peru/Chile). Auf Nauru gehen die Phosphor-Vorräte seit Mitte der 1970er Jahre kontinuierlich zurück und sind mittlerweile fast völlig erschöpft.

Von den weltweit jährlich geförderten etwa 100 Millionen Tonnen an Rohphosphaten werden etwa 90 % zur Herstellung von Düngemitteln verwendet. Phosphor kann in Düngemitteln derzeit durch keinen anderen Stoff ersetzt werden.

Phosphor hat auch in der organischen Welt eine wichtige Bedeutung und kommt in verschiedensten Bereichen der Fauna und Flora vor: Etwa als Hydroxylapatit Ca5(PO4)3OH, welcher einer der Hauptbestandteile der Gerüstsubstanz ist, die in Knochen und Zähnen vorkommt. Weiterhin spielen Phosphorverbindungen als Bestandteile der Nukleinsäuren und als Bestandteil des Energieträgers ATP eine wichtige Rolle in lebenden Organismen.

Forge 1.7.10

Name Known Incompatibilities Description Author Performance Improvement
None BetterFps is a Minecraft mod that add a few performance improvements, trying to be compatible with other mods. Guichaguri Both
Forge Essentials FastCraft is a sophisticated mod which improves the client and server performance significantly without any game play changes. sfPlayer1 Both
None FoamFix is a mod designed to optimize post-1.7.10 modded Minecraft using simple, targeted optimizations. asiekierka Both
Unknown Configuration options skyboy026 (TeamCoFH) Both
Unknown Prevents squids spawning in regions where they would instantly despawn hilburn Server

Installation

Manual installation (recommended)

Usually, releases will be made available on GitHub slightly sooner than other locations.

Bleeding-edge builds (unstable)

If you are a player who is looking to get your hands on the latest bleeding-edge changes for testing, consider
taking a look at the automated builds produced through our GitHub Actions workflow.
This workflow automatically runs every time a change is pushed to the repository, and as such, the builds it produces
will generally reflect the latest snapshot of development.

Bleeding edge builds will often include unfinished code that hasn’t been extensively tested. That code may introduce
incomplete features, bugs, crashes, and all other kinds of weird issues. You should not use these bleeding edge builds
unless you know what you are doing and are comfortable with software debugging. If you report issues using these builds,
we will expect that this is the case. Caveat emptor.

Reporting Issues

You can report bugs and crashes by opening an issue on our issue tracker.
Before opening a new issue, use the search tool to make sure that your issue has not already been reported and ensure
that you have completely filled out the issue template. Issues which are duplicates or do not contain the necessary
information to triage and debug may be closed.

Please note that while the issue tracker is open to feature requests, development is primarily focused on
improving hardware compatibility, performance, and finishing any unimplemented features necessary for parity with
the vanilla renderer.

Community

  • Get installation help and technical support with all of our mods
  • Be notified of the latest developments as they happen
  • Get involved and collaborate with the rest of our team
  • … and just hang out with the rest of our community.

Building from sources

Support is not provided for setting up build environments or compiling the mod. We ask that
users who are looking to get their hands dirty with the code have a basic understanding of compiling Java/Gradle
projects. The basic overview is provided here for those familiar.

Building with Gradle

Phosphor uses a typical Gradle project structure and can be built by simply running the default task. After Gradle
finishes building the project, you can find the build artifacts (typical mod binaries, and their sources) in
.

Build artifacts ending in are outputs containing the sources and compiled classes
before they are remapped into stable intermediary names. If you are working in a developer environment and would
like to add the mod to your game, you should prefer to use the or configurations provided by
Loom instead of these outputs.

Phosphor is licensed under GNU LGPLv3, a free and open-source license. For more information, please see the license file.

Geschichte

Phosphor wurde 1669 von Hennig Brand, einem deutschen Apotheker und Alchemisten, entdeckt, als dieser – auf der Suche nach dem „Stein der Weisen“ – Urin bis zur Trocknung eindampfte. Als er den Rückstand unter Luftabschluss glühte, entstand durch Reduktion mit organischer Materie weißer Phosphor, der im Dunkeln aufgrund der Phosphoreszenz leuchtete. Obwohl Phosphor zu dieser Zeit noch keine Verwendung außer als Nachtlampe fand, wurde es mit Gold aufgewogen. Hennig Brand wurde durch diese Entdeckung nicht reich und verkaufte das Herstellungsrezept an einen Alchemisten, der hiermit ein Vermögen machte. Johann Daniel Kraft, besagter Alchimist, demonstrierte die Herstellung von Phosphor 1677 vor Robert Boyle.

Weißer Phosphor wurde anfangs auf Grund seiner faszinierenden Eigenschaft der Phosphoreszenz als Heilmittel verwendet. Später spielte er eine wichtige Rolle bei der Streichholzherstellung; da weißer Phosphor hochgiftig ist, kam es jedoch oft zu schweren Vergiftungen bei Arbeitern.

Weißer Phosphor spielte in der Militärgeschichte als Waffe eine Rolle. Dieser wurde als Füllmaterial von Brandbomben, den sogenannten Phosphorbomben verwendet. So setzte die britische Luftwaffe im Zweiten Weltkrieg ein Gemisch aus weißem Phosphor und Kautschuk ein. Durch den Kautschuk klebt die zähflüssige Masse und lässt sich deshalb schlecht abstreifen. Sie verursacht auf der Haut schlecht heilende Wunden.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

1. Почему мой FPS все еще такой низкий?

      Вы можете отключить Vsync и увеличить свой максимальный FPS в разделе Параметры видео.  Настройки по умолчанию настроены так, чтобы максимально соответствовать визуальным эффектам Vanilla.  Вы можете настроить параметры, чтобы включить/отключить параметры, чтобы полностью максимизировать производительность за счет визуальной четности.  Приведенные ниже настройки обязательно следует установить, если вы хотите максимизировать частоту кадров в секунду:

Общие

  • Расстояние рендеринга: как можно меньше
  • Использовать VSync: Отключено
  • Максимальная частота кадров: Неограничена

Передовой

  • Сортировка по прозрачности: Отключена
  • Использование Отбраковки Листьев: Включено

2. Я вижу границы пикселей и/или блики вокруг случайных блоков!

      Это связано с функцией компактного формата вершин.  Вы можете отключить это в разделе Параметры видео -> Дополнительно

3. Мировой ген прозрачен или невидим

Если это для отдельных блоков, то, скорее всего, это ошибка, и вы можете отправить сообщение о проблеме.  Если весь мир выглядит странно, возможно, ваш графический процессор не поддерживает рендеринг с несколькими отрисовками, и в этом случае вы можете изменить рендеринг на Oneshot 3.3 или 2.0 в разделе Настройки видео- > Дополнительно.>  Существует также проблема с полупрозрачными блоками, если у вас есть Сказочные! настройки включены.  Попробуйте использовать быстро или необычно

4. Можете ли вы добавить совместимость для______?

Если вы добавите Оптифин/Перформант/Хлор/Другую вилку натрия, нет.  Оптифин/Хлор/Другие вилки изменяют/заменяют трубопровод рендеринга, точно так же, как это делает натрий.  Невозможно сделать их совместимыми, так как все они пытаются перезаписать ванильный код в одних и тех же местах, но разными способами.  Совместимость с производительностью не будет поддерживаться.  Видишь https://github.com/spoorn/sodium-forge/issues/23#issuecomment-863807223.

Если вы поставите другие моды, да!  Я работаю над этим.  Вы можете помочь, если у вас есть пропускная способность, не стесняйтесь отправлять запрос на вывод.

5. Поддерживает ли это шейдеры?  Шейдеры радужной оболочки/Оптифина?

Не в данный момент.  Я бы с удовольствием поддержал шейдеры, но это большая работа, на которую у меня пока нет времени.

6. Вы вернетесь на 1.12.2?  1.8.9?  1._._? Будет ли это доступно для 1.17?

В настоящее время нет планов обратного переноса, в текущей версии все еще предстоит выполнить множество улучшений, и обратный перенос-утомительная задача.

Forge еще не вышел на 1.17, так что мы все этого ждем.

7. Это сломано!  Это не работает!  Можете ли вы добавить это?

Не стесняйтесь добавлять комментарий ниже или создавать проблему в https://github.com/spoorn/sodium-forge/issues.  Я прохожу через все, но мне может потребоваться некоторое время, чтобы добраться до этого, потому что я все еще изучаю, как работает графическое программирование, и у меня есть работа на полный рабочий день!

P.S. Я получил разрешение от автора порта Forge опубликовать это на Curseforge, так как мне это было нужно для публикации моего собственного модпака!  Это также разрешено в соответствии с лицензией

Installation

Manual installation (recommended)

Usually, releases will be made available on GitHub slightly sooner than other locations.

Bleeding-edge builds (unstable)

If you are a player who is looking to get your hands on the latest bleeding-edge changes for testing, consider
taking a look at the automated builds produced through our GitHub Actions workflow.
This workflow automatically runs every time a change is pushed to the repository, and as such, the builds it produces
will generally reflect the latest snapshot of development.

Bleeding edge builds will often include unfinished code that hasn’t been extensively tested. That code may introduce
incomplete features, bugs, crashes, and all other kinds of weird issues. You should not use these bleeding edge builds
unless you know what you are doing and are comfortable with software debugging. If you report issues using these builds,
we will expect that this is the case. Caveat emptor.

Reporting Issues

You can report bugs and crashes by opening an issue on our issue tracker.
Before opening a new issue, use the search tool to make sure that your issue has not already been reported and ensure
that you have completely filled out the issue template. Issues which are duplicates or do not contain the necessary
information to triage and debug may be closed.

Please note that while the issue tracker is open to feature requests, development is primarily focused on
improving hardware compatibility, performance, and finishing any unimplemented features necessary for parity with
the vanilla renderer.

Community

  • Get installation help and technical support with all of our mods
  • Be notified of the latest developments as they happen
  • Get involved and collaborate with the rest of our team
  • … and just hang out with the rest of our community.

Building from sources

Support is not provided for setting up build environments or compiling the mod. We ask that
users who are looking to get their hands dirty with the code have a basic understanding of compiling Java/Gradle
projects. The basic overview is provided here for those familiar.

Building with Gradle

Phosphor uses a typical Gradle project structure and can be built by simply running the default task. After Gradle
finishes building the project, you can find the build artifacts (typical mod binaries, and their sources) in
.

Build artifacts ending in are outputs containing the sources and compiled classes
before they are remapped into stable intermediary names. If you are working in a developer environment and would
like to add the mod to your game, you should prefer to use the or configurations provided by
Loom instead of these outputs.

Phosphor is licensed under GNU LGPLv3, a free and open-source license. For more information, please see the license file.

Notes on control tracking

Please note that the control tracking functionality can impose SIGNIFICANT overhead (we’ve observed > 10x slowdown) depending on the structure of the code you are instrumenting and the amount of tainted data flowing around. This is incredibly un-optimized at this point. This also can make it difficult to apply Phosphor with control tracking to very large methods (since it causes them to grow beyond the maximum size permitted). Nonetheless, we have had great success applying it in various projects — it works fine on the JDK (perhaps a few internal classes will be too large, but they were not needed in our workloads) and on projects like Tomcat. There are quite a few paths to improving this functionality. If you are interested in helping, please contact us.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *