Esiste qualche restrizione di licenza per evitare la traduzione binaria di CIL su un bytecode personalizzato?

4

Prima di una domanda vera, permettetemi di riassumere quello che sto cercando di fare. Ho in programma di implementare un runtime VM piccolo, abilitato per JIT, basato su registro. Invece di creare un compilatore appropriato (che è un IMO difficile) per un superbo linguaggio casalingo, ho deciso di implementare un traduttore binario da un codice byte appropriato (molto simile all'approccio VM di Dalvik). Considerando il bytecode CIL rispetto a Java, CIL è la migliore per le mie esigenze.

Come nota, ho voluto elencare alcune cose importanti per evitare possibili confusioni:

  1. Base Core Library (BCL) o eventuali assembly Microsoft specifici non verranno decompilati e tradotti. Invece, i riferimenti BCL saranno soggetti a sostituzione con i miei codici specifici VM in fase di traduzione (proprio come l'approccio COSMOS Plugs).
  2. Tutti gli opcode CIL non saranno tradotti. Quindi, usare direttamente CIL non è un'opzione.
  3. "Qualsiasi" eseguibile .NET non è destinato alla traduzione. .NET sarà uno strumento, non un obiettivo.
  4. Dalvik VM è un buon esempio di ciò che sto cercando di fare. Nel caso di Dalvik, i programmi sono scritti in Java, ma i codici byte Java sono tradotti in opuscoli Dalvik. Nel mio caso, i programmi verranno scritti in .NET, ma CIL verrà tradotto in opcodes VM "fantasiosi".
  5. La VM personalizzata stessa sarà closed source e inizialmente si troverà in un software libero. Ma, nel tempo, potrebbe essere utilizzato in progetti open source e / o commerciali.

Quindi, c'è qualche restrizione della licenza per evitare che lo faccia? In tal caso, come posso evitare le restrizioni? Realizzare solo applicazioni non profit o renderle open source?

EDIT: non userò CLI , CLR o qualsiasi altra cosa distribuita da Microsoft. Neanche io ridistribuirò o integrare SSCLI nelle mie applicazioni. La domanda riguarda la traduzione del codice CIL in codici byte personalizzati che verranno eseguiti con i miei strumenti personali . Quindi, in realtà è la decompilazione dei miei eseguibili .NET personalizzati in codici byte diversi per soddisfare le mie esigenze in fase di produzione. Quindi, essenzialmente userò i compilatori .NET come front-end per il mio decompilatore, ma non ridistribuirò nemmeno i compilatori .NET.

EDIT2: CLI E CIL SONO COSE DIVERSE!

    
posta Osman Turan 23.12.2011 - 21:58
fonte

1 risposta

4

Se avessi capito correttamente la tua domanda penso che tutto quello che stai dicendo è che creerai il tuo sistema (compilatore o macchina virtuale) che prende codici byte CIL e fa qualcosa di interessante . Questo fare qualcosa può essere naturalmente tradotto in un eseguibile o in un altro IL che viene successivamente interpretato.

Ora la domanda è davvero - il CIL è una proprietà intellettuale di Microsoft che ti denunceranno?

Il link wiki di Mono fornisce alcuni link interessanti su questo; Di conseguenza,

When Microsoft first announced their .NET Framework in June 2000 it was described as "a new platform based on Internet standards", and in December of that year the underlying Common Language Infrastructure was published as an open standard, "ECMA-335" - opening up the potential for independent implementations.

Qui è la casa di riferimento. La pagina del centro di sviluppo di Microsoft fornisce buoni dettagli. Secondo questo il set di istruzioni CIL è parte (parte III) delle specifiche nello standard CLI generale. Il sito menziona anche che ci sono le seguenti società coinvolte nello sviluppo di questo standard.

Many of the organizations that have participated in the TC39/TG2 and TC39/TG3 work have volunteered to mirror this site. The links for the mirror sites are:

Intel Corporation,
ISE (Eiffel),
IT University, Copenhagen
Kahu Research, New Zealand
Microsoft Corporation
Novell (Mono)

Secondo lo stesso riferimento wiki :

On July 6, 2009, Microsoft announced that it was placing their ECMA 334 and ECMA 335 specifications under their Community Promise pledging that they would not assert their patents against anyone implementing, distributing, or using alternative implementations of .NET

Ora, basandoci su tutte le ricerche precedenti, possiamo dire che, dato che l'ECMA è uno standard aperto, puoi effettivamente legalmente ciò che ti proponi di fare.

NOTA: alcuni componenti non sono inclusi in questa specifica. Inoltre, l'utilizzo di .NET CLR non fa parte di questa discussione.

NOTA BENE: ma sì, molti dettagli entrano nella legalità. Quindi visto che non sono un avvocato, il mio consiglio è gratuito ma senza alcuna garanzia! :)

    
risposta data 29.12.2011 - 16:18
fonte

Leggi altre domande sui tag